Perl自作パッケージ(2) Base::Watch
Posted in Perl, 自作Perlパッケージ on 03/12/2010 09:31 pm by adminBase::Objectクラスにプロパティを監視する機能を付加するために実装したクラスです。
Perlのtie変数の機能を利用して、変数を監視します。
package Base::Watch;
sub TIESCALAR {
my $class = shift;
my $setter = shift;
my $getter = shift;
my $obj = shift;
my $self = {
object => $obj,
setter => $setter,
getter => $getter,
value => $value
};
return bless $self,$class;
}
sub FETCH {
my $self = shift;
my $sub = $self->{getter};
return $self->{value} unless $self->{object}->can($sub);
return $self->{object}->$sub($self->{value});
}
sub STORE {
my $self = shift;
my $value = shift;
my $sub = $self->{setter};
if($self->{object}->can($sub)){
$value = $self->{object}->$sub($value);
}
return $self->{value} = $value;
}
1;