DateTime::Format::Japanese

number_formatやyear_formatをhashで指定する場合,ダブルクォートで囲わないとエラーが出る

Bareword "FORMAT_ROMAN" not allowed while "strict subs" in use at dt-format.pl line 17.
Execution of dt-format.pl aborted due to compilation errors.

PBP「4.5定数」のuse constantの問題*1に引っかかっているからみたい.この定数はDateTime::Format::Japanese::Commonの中でconstantとして設定されている
use DateTime::Format::Japanese qw(:constans)として,Exportすればよいのですねぇ.どうやらDateTime::Format::Japanese::Commonだけを見て勘違いしたらしい

use strict;
use Perl6::Say;
use DateTime::Format::Japanese;
use DateTime::Format::Japanese qw(:constans);

my $dt_ja = DateTime->now(
    time_zone => 'Asia/Tokyo',
);

my $fmt = DateTime::Format::Japanese->new(
#    number_format => "FORMAT_KANJI_WITH_UNIT",
#    year_format   => "FORMAT_ERA", 
    number_format => FORMAT_KANJI_WITH_UNIT,
    year_format   => FORMAT_ERA, 
);
my $str = $fmt->format_datetime($dt_ja);

say $str;#平成十九年六月二十七日十七時三十七分四十六秒

*1:「use constantによって生成された定数は,文字列が要求されるすべての場所で,裸のワードとして扱われる」