Created by
sironekotoro
| #!/usr/bin/env perl
use strict;
use warnings;
binmode( STDIN, ':utf8' ); # 標準入力をutf8として認識する
binmode( STDOUT, ':utf8' ); # 標準出力をutf8にする
use utf8; # ソースコードでマルチバイト文字を使う際に利用
# このコードの場合は「年」
print 'INPUT 例)平成30年 > ';
my $era = <STDIN>; # 標準入力から受け取り, 変数 $era に入れる
chomp $era; # 受け取った文字列の改行を削除
# 正規表現で「文字のパターン」から以下の情報を取り出す
# 年号: 冒頭の2文字 最初のカッコでキャプチャするので $1 に格納される
# 年数: 年号の後にあり、かつ末尾の「年」より手前にある数字を $2 に格納される
$era =~ / # era: 時代
\A # \A 文字列の先頭の位置を表すアンカー記号
( # 最初の($1)キャプチャ開始のカッコ
\w # 文字1つにマッチする
{2} # 直前のマッチ(1文字)が2回あるという量指定子
) # 最初の($1)キャプチャ終了のカッコ
( # 2回目の($2)キャプチャ開始のカッコ
\d # 数字1つにマッチする
+ # 直前のマッチが1個以上あるという量指定子
) # 2回目の($2)キャプチャ終了のカッコ
年 # 年
\z # 文字列の終端の位置を表すアンカー記号
/x; # 正規表現のデリミタと拡張正規表現オプションの x
# $era =~ /\A(\w{2})(\d+)年\z/; # 解説抜きで1行で書く場合の正規表現。末尾のxが不要
# 仮に入力が 平成30年 だった場合
my $era_name = $1;
my $era_number = $2;
print '年号は「' . $era_name . "」\n"; # 平成
print '年は' . $era_number . "\n"; # 30
print '西暦は' . $era_number . '年' . "\n"; # 2018年
|