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) {
# tr演算子を利用して置換
# 十については置換していない
$arabic_number =~ tr/〇一二三四五六七八九/0123456789/;
# 十 が入る位置パターンで置換
# 十 が先頭 かつ その後に何の文字もない場合は 10 に置換
$arabic_number =~ s/^十$/10/;
# 肯定的先読み(?=pattern)
# 先頭に 十 があり、十 の後に文字が続く場合に 十を置換
$arabic_number =~ s/(^十)(?=.+$)/1/;
# 十 が他のアラビア数字に挟まれている場合、 十 を削除
# 肯定的後読み(?<=pattern)
# 肯定的先読み(?=pattern)
$arabic_number =~ s/(?<=\d)十(?=\d)//;
# 末尾に 十 がある場合には 0 に置換
$arabic_number =~ s/十$/0/;
print encode_utf8($arabic_number) . "\n";
}
|