Created by
sironekotoro
| #!/usr/bin/perl
use strict;
use warnings;
# 今回のように、スクリプト内に直接マルチバイト文字(日本語の全角文字など)を
# 使う場合には use utf8; する
use utf8;
# スクリプト内に書かれたマルチバイト文字(日本語の全角文字など)を標準出力する
# 場合には Encode モジュールを使う。
use Encode qw/encode_utf8/;
# 0〜99までの数字を漢数字を受け取ってアラビア数字にする
# 与えられる文字列
my @array = (
'一', '二', '十', '十一',
'三四', '二十一', '三十四', '三十',
'三〇'
);
for my $arabic_number (@array) {
# 漢数字を数字に置き換える
# 置換できなかったものは無視される
$arabic_number =~ s/〇/0/;
$arabic_number =~ s/一/1/;
$arabic_number =~ s/二/2/;
$arabic_number =~ s/三/3/;
$arabic_number =~ s/四/4/;
$arabic_number =~ s/五/5/;
$arabic_number =~ s/六/6/;
$arabic_number =~ s/七/7/;
$arabic_number =~ s/八/8/;
$arabic_number =~ s/九/9/;
$arabic_number =~ s/十/10/;
# 上記の置換でアラビア数字が2桁以下になるものであれば、
# この時点で置換は完成している
# 一 => 1
# 二 => 2
# 十 => 10
# 三四 => 34
# 三〇 => 30
# アラビア数字が3桁以上のものには、さらに置換で対応する
# 10が先頭にあるか、それ以外かでグループ分けできそう
# 十一 => 101 正解は 11
# 二十一 => 2101 正解は 21
# 三十四 => 3104 正解は 34
# 三十 => 310 正解は 30
if ( $arabic_number > 100 ) {
# 先頭に10がある時はそれを1に置換する
$arabic_number =~ s/^10/1/;
# それ以外の10は置換を使って削除する
$arabic_number =~ s/10//;
}
print encode_utf8($arabic_number) . "\n";
}
|