Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

日本語クラス名で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のバージョンに気をつけようぜ! 僕ははまった!