Sunday, November 12, 2006
Perl/펄] 숫자를 영어 스펠링으로 변환; 영어식으로 읽기; Number to English
아라비아 숫자를 영어 스펠링으로 변환하는 펄 스크립트입니다.
예를 들어
64 를 sixty-four 로 변환하고, 괄호 속에는 64의 서수인 sixty-fourth 를 출력합니다. (비틀즈의 When I'm Sixty-Four 라는 노래도 있지요)
Lingua::EN::Numbers 라는 CPAN 모듈을 다운받아서, 펄 라이브러리 디렉토리에 설치해 주어야 아래의 num2en.pl 스크립트가 실행됩니다.
Lingua::EN::Numbers 는 순수한 펄 모듈이기에, 컴파일은 필요없고 "Lingua-EN-Numbers-1.01.tar.gz" 라는 압축파일 속의 Numbers.pm 이라는 파일 하나만 카피해 주면 됩니다. 어디에 복사하느냐가 문제인데
경로가 이렇게 되어야 합니다:
즉 Lingua 와 EN 이라는 하위 디렉토리(폴더)를 만들어 주고 그 안에 넣어야 합니다. 자세한 것은 ▶▶ 펄/Perl] 아라비아 숫자를, 일본어 숫자 읽기 발음으로 변환, Lingua-JA-Number 여기를 참고하시면 됩니다.
파일명: num2en.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
사용법: num2en.pl 뒤에 아라비아 숫자를 적어주고 Enter키만 치면 됩니다.
실행 결과 화면:
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
마이너스값(-)과, 소수점 이하, 그리고 1000단위 쉼표가 들어간 숫자도 읽을 수 있습니다.
0~125, 100~12500 까지의 아라비아 숫자를 영어식 읽기 발음으로 변환한 표: ▶▶ 영어로 숫자 읽기; 서수(Ordinal Number)로 세기, 영어 스펠링으로; English Numbers
▶▶ Perl/펄] 로마 숫자, 아라비아 숫자 상호 변환 프로그램; ROMAN NUMERAL Convert
▶▶ Perl] 숫자 한글 발음으로 읽기, 한글 변환; Number To Korean; Spell Out
▶▶ Perl/펄] 프랑스어 숫자 읽기, 서수로 세기; Number to French Spell
▶▶ Perl/펄] 독일어 숫자 읽기, 아라비아 숫자를 독어로 세기; Arabic Number To German Spell
예를 들어
64 를 sixty-four 로 변환하고, 괄호 속에는 64의 서수인 sixty-fourth 를 출력합니다. (비틀즈의 When I'm Sixty-Four 라는 노래도 있지요)
Lingua::EN::Numbers 라는 CPAN 모듈을 다운받아서, 펄 라이브러리 디렉토리에 설치해 주어야 아래의 num2en.pl 스크립트가 실행됩니다.
Lingua::EN::Numbers 는 순수한 펄 모듈이기에, 컴파일은 필요없고 "Lingua-EN-Numbers-1.01.tar.gz" 라는 압축파일 속의 Numbers.pm 이라는 파일 하나만 카피해 주면 됩니다. 어디에 복사하느냐가 문제인데
경로가 이렇게 되어야 합니다:
<펄 라이브러리 디렉토리>/Lingua/EN/Numbers.pm
즉 Lingua 와 EN 이라는 하위 디렉토리(폴더)를 만들어 주고 그 안에 넣어야 합니다. 자세한 것은 ▶▶ 펄/Perl] 아라비아 숫자를, 일본어 숫자 읽기 발음으로 변환, Lingua-JA-Number 여기를 참고하시면 됩니다.
영어로 숫자 세기, 펄 스크립트
파일명: num2en.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;
use Lingua::EN::Numbers qw(num2en num2en_ordinal);
die "Input Any Number...\n" if ($#ARGV == -1 || !isDec($ARGV[0]));
printf "%s (%s)\n", num2en($ARGV[0]), num2en_ordinal($ARGV[0]);
sub isDec { # 10진수 정수/실수 여부 체크
$_[0] =~ s/,//g; # 1000단위 구분 쉼표 제거
return 0 if ($_[0] =~ /^\.+$/); # 점(.)만 있는 경우 처리
return 0 if ($_[0] =~ /^0\d+$/); # 8진수 처리
($_[0] =~ /^[+-]?\d*(\.?\d*)$/) ? 1 : 0;
}
use strict; use warnings;
use Lingua::EN::Numbers qw(num2en num2en_ordinal);
die "Input Any Number...\n" if ($#ARGV == -1 || !isDec($ARGV[0]));
printf "%s (%s)\n", num2en($ARGV[0]), num2en_ordinal($ARGV[0]);
sub isDec { # 10진수 정수/실수 여부 체크
$_[0] =~ s/,//g; # 1000단위 구분 쉼표 제거
return 0 if ($_[0] =~ /^\.+$/); # 점(.)만 있는 경우 처리
return 0 if ($_[0] =~ /^0\d+$/); # 8진수 처리
($_[0] =~ /^[+-]?\d*(\.?\d*)$/) ? 1 : 0;
}
사용법: num2en.pl 뒤에 아라비아 숫자를 적어주고 Enter키만 치면 됩니다.
실행 결과 화면:
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
D:\Z>num2en.pl
Input Any Number...
D:\Z>num2en.pl 1101
one thousand one hundred and one (one thousand one hundred and first)
D:\Z>num2en.pl 666
six hundred and sixty-six (six hundred and sixty-sixth)
D:\Z>num2en.pl 44
forty-four (forty-fourth)
D:\Z>num2en.pl -4553
negative four thousand five hundred and fifty-three (negative four thousand fiv
e hundred and fifty-third)
D:\Z>num2en.pl 12.545
twelve point five four five (twelve point five four fifth)
D:\Z>num2en.pl 123456789
one hundred and twenty-three million, four hundred and fifty-six thousand, seven
hundred and eighty-nine (one hundred and twenty-three million, four hundred an
d fifty-six thousand, seven hundred and eighty-ninth)
D:\Z>num2en.pl 5,474,151
five million, four hundred and seventy-four thousand, one hundred and fifty-one
(five million, four hundred and seventy-four thousand, one hundred and fifty-fi
rst)
D:\Z>num2en.pl -4,151.11
negative four thousand one hundred and fifty-one point one one (negative four t
housand one hundred and fifty-one point one first)
D:\Z>num2en.pl 0
zero (zeroth)
Input Any Number...
D:\Z>num2en.pl 1101
one thousand one hundred and one (one thousand one hundred and first)
D:\Z>num2en.pl 666
six hundred and sixty-six (six hundred and sixty-sixth)
D:\Z>num2en.pl 44
forty-four (forty-fourth)
D:\Z>num2en.pl -4553
negative four thousand five hundred and fifty-three (negative four thousand fiv
e hundred and fifty-third)
D:\Z>num2en.pl 12.545
twelve point five four five (twelve point five four fifth)
D:\Z>num2en.pl 123456789
one hundred and twenty-three million, four hundred and fifty-six thousand, seven
hundred and eighty-nine (one hundred and twenty-three million, four hundred an
d fifty-six thousand, seven hundred and eighty-ninth)
D:\Z>num2en.pl 5,474,151
five million, four hundred and seventy-four thousand, one hundred and fifty-one
(five million, four hundred and seventy-four thousand, one hundred and fifty-fi
rst)
D:\Z>num2en.pl -4,151.11
negative four thousand one hundred and fifty-one point one one (negative four t
housand one hundred and fifty-one point one first)
D:\Z>num2en.pl 0
zero (zeroth)
마이너스값(-)과, 소수점 이하, 그리고 1000단위 쉼표가 들어간 숫자도 읽을 수 있습니다.
0~125, 100~12500 까지의 아라비아 숫자를 영어식 읽기 발음으로 변환한 표: ▶▶ 영어로 숫자 읽기; 서수(Ordinal Number)로 세기, 영어 스펠링으로; English Numbers
▶▶ Perl/펄] 로마 숫자, 아라비아 숫자 상호 변환 프로그램; ROMAN NUMERAL Convert
▶▶ Perl] 숫자 한글 발음으로 읽기, 한글 변환; Number To Korean; Spell Out
▶▶ Perl/펄] 프랑스어 숫자 읽기, 서수로 세기; Number to French Spell
▶▶ Perl/펄] 독일어 숫자 읽기, 아라비아 숫자를 독어로 세기; Arabic Number To German Spell
tag: perl
Perl | 펄
<< Home