BEGIN {
no strict 'refs';
for my $property (qw/id debug display_time default_text/) {
*$property = sub {
my ($self, $value) = @_;
croak "Too many arguments for $property method" if @_ > 2;
$self->{$property} = $value if @_ == 2;
return $self->{$property};
}
}
}
####
BEGIN {
no strict 'refs';
for my $property (qw/id debug display_time default_text/) {
*$property = sub : lvalue { $_[0]->{$property} };
}
}
##
##
OLD SITUATION NEW SITUATION
$foo->bar; $foo->bar;
$foo->bar(15); $foo->bar = 15;
{
my $temp = $foo->bar;
$temp =~ s/foo/bar/;
$foo->bar($temp);
} $foo->bar =~ s/foo/bar/