in reply to english numbers to chinese numbers
I liked it very much, though I saw some discrepancies on the web (I do not know Chinese... just doing it by websites)
This website seems to translate the Chinese characters into something else...
my $number=shift; print "Received Number($number)";
@CN_NUMBERS = qw(零 一 二 三 四 五 六 七 八 九); my %cn_numbers= map {$_ => $CN_NUMBERS[$_]} 0..$#CN_NUMBERS;
my $cn_number; if ($number>=10000){ my $n=$number/10000; $n=~s/\..*//; $cn_number=$cn_numbers{$n}."万"; $number=$number % 10000; } if ($number>=1000){ my $n=$number/1000; $n=~s/\..*//; $cn_number.=$cn_numbers{$n}."千"; $number=$number % 1000; } if ($number>=100){ my $n=$number/100; $n=~s/\..*//; $cn_number.=$cn_numbers{$n}."百"; $number=$number % 100; } if ($number>=10){ my $n=$number/10; $n=~s/\..*//; $cn_number.=$cn_numbers{$n}."十"; $number=$number % 10; } if ($number>0){ $cn_number.=$CN_NUMBERS[$number]; }
print "UNDEFINED" unless(defined $cn_number); $cn_number .= $CN_NUMBERS[0] unless(defined $cn_number); print "!!!!()\n";
# 1,000: 千 (仟) qiān if ($cn_number=~/万/ && $cn_number!~/千/){ $cn_number=~s/万/万零/; }
# 10,000: 万 (萬) wàn (1'0000) if ($cn_number=~/千/ && $cn_number!~/百/){ $cn_number=~s/千/千零/; }
# 100,000: 十万 (萬) shíwàn (10'0000) if ($cn_number=~/百/ && $cn_number!~/十/){ $cn_number=~s/百/百零/; }
$cn_number=~s/一十/十/g; print "$cn_number\n";
edit: used pre and to mask the [] for arrays I used code
|
|---|