hmm... my comment was lost... I added wàn (1'0000) and shíwàn (10'0000)
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