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
参考 |
|