旧暦(太陰太陽暦)の月名を取得する - Perl

1月を日本では睦月(むつき)とも呼ぶ。このような旧暦の名称を取得するにはどうすれば良いだろう?

睦月から順番に配列に入れ、localtimeの4番目の戻り値をそのまま添え字として使用するだけで良い。忘れがちだが、localtimeが返す月の番号は0~11だ。おそらくこういった用途のための仕様と思われる(Cなど、Perl以外の言語もほぼ似たような感じだっていうか、元になってるのはCなわけだが)

サンプル

;#
;#旧暦の月名
;#

my $now_month  = (localtime())[4];
my $month_name = getKyurekiMonthName($now_month);

print "$month_name\n";


#----------------------------------------
#旧暦の月名を取得する
#----------------------------------------
sub getKyurekiMonthName{
    my $month = shift;    #0~11
    my @label = (
             '睦月',  '如月', '弥生'
            ,'卯月',  '皐月', '水無月'
            ,'文月',  '葉月', '長月'
            ,'神無月','霜月', '師走'
    );

    return( $label[$month] );
}

余談だが、読み方は次のようになる。

  • 1月 睦月 (むつき)
  • 2月 如月 (きさらぎ)
  • 3月 弥生(やよい)
  • 4月 卯月 (うづき)
  • 5月 皐月(さつき)
  • 6月 水無月(みなづき)
  • 7月 文月 (ふみづき、ふづき)
  • 8月 葉月 (はづき)
  • 9月 長月 (ながつき)
  • 10月 神無月(かんなづき)
  • 11月 霜月 (しもつき)
  • 12月 師走 (しわす)

さらに余談だが、島根県の出雲地方では10月のことを神無月(かんなづき)ではなく、神有月(かみありづき)と呼ぶ。これは日本中の神様が出雲にある出雲大社に全て集まるという神話から来ているとされる。
 ※ちなみに誰と誰を結ぶか、縁談の話をしているとのこと。出雲大社が縁結びの神様と言われるのはここから。