日本語クラス名でClass::Accessorを使えるのは5.16からという話
試行メモ。
Perlはかなり前からuse utf8すれば、日本語(マルチバイト)をクラス名とか変数名とかに使えるけれど、
クラス名を日本語にして、use Class::Accessor(::Fast)すると、
5.14系ではエラーになるけど、5.16系では大丈夫だった。
ちなみにClass::Accessorのバージョンは同じ0.34。
使用コード
use strict; use warnings; use utf8; package マス { use base 'Class::Accessor'; __PACKAGE__->mk_accessors(qw/ x y /); } my $masu = マス->new({ x => 1, y => 2 }); print $masu->x, "\n";
perl-5.14.3
$ perlbrew use perl-5.14.3
$ perl ~/masu.pl Can't call method "isa" without a package or object reference at /home/rightgo09/perl5/perlbrew/perls/perl-5.14.3/lib/5.14.3/base.pm line 81. BEGIN failed--compilation aborted at /home/rightgo09/masu.pl line 6.
perl-5.16.2
$ perlbrew use perl-5.16.2
$ perl ~/masu.pl 1
http://search.cpan.org/dist/perl-5.16.0/pod/perldelta.pod#Unicode_Symbol_Names
たぶんこの辺のおかげのような気がする。(ちゃんと読んでないけど)
みんな! 日本語クラス名でClass::Accessorを使う時はPerlのバージョンに気をつけようぜ! 僕ははまった!