Class::Data::Inheritableを使ってクラス変数のアクセサを作るクラス変数のアクセサを作る。すなわち、あるインスタンスのクラス変数の値を変えると、他のインスタンスの値も変わる。 package CDI; use base qw/Class::Data::Inheritable/; __PACKAGE__->mk_classdata( name => 'taro' ); sub new { my $class = shift; my ($args) = (@_); $args ||= {}; return bless { %{$args} }, $class; } #!/usr/local/bin/perl my $cdi = CDI->new( { name => 'hanako' } ); print $cdi->name,"\n"; # taro $cdi->name('jiro'); print $cdi->name,"\n"; # jiro my $cdi2 = $cdi; $cdi2->name('saburo'); print $cdi->name,"\n"; # saburo print $cdi2->name,"\n"; # saburo undef($cdi); undef($cdi2); $cdi = CDI->new; print $cdi->name,"\n"; # saburo
参考 |
|