+use utf8; # ソースコードでマルチバイト文字を使う際に利用
+binmode( STDIN, 'encoding(utf8)' ); # 標準入力をutf8として認識する
+binmode( STDOUT, 'encoding(utf8)' ); # 標準出力をutf8にする
+binmode( STDERR, 'encoding(utf8)' ); # 標準エラー出力をutf8にする
+# Date::Japanese::Era - 和暦と西暦の相互変換
+# http://perldoc.jp/docs/modules/Date-Japanese-Era-0.03/lib/Date/Japanese/Era.pod
+use Date::Japanese::Era;
+# https://ja.wikipedia.org/wiki/%E6%98%8E%E6%B2%BB5%E5%B9%B4
+# > この布告によって、明治5年12月2日・西暦1872年12月31日をもって太陰太陽暦(天保暦)を廃止し、その翌日からグレゴリオ暦に移行[1]、明治6年(1873年)1月1日となることとしたため、明治5年は12月3日から12月30日までの28日間が存在しない。
+my $START_MEIJI_GREGORIO = 1873;
+# グレゴリオ暦採用以後のランダムな年を出すために計算
+my $rand_year = int( rand( $NOW - $START_MEIJI_GREGORIO ) );
+# ランダムな年数をグレゴリオ暦採用年に加えて、西暦を求める
+my $answer_year = $rand_year + $START_MEIJI_GREGORIO;
+# Date::Japanese::Era モジュールで楽をする
+my $era = Date::Japanese::Era->new( $answer_year, 1, 1 );
+print $era->name . $era->year
+ . "年1月1日は西暦何年でしょう?\n4桁の数字で回答してください > ";
+if ( $input == $answer_year ) {