mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
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/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;
}


사용법: 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)



마이너스값(-)과, 소수점 이하, 그리고 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 | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top