sub mk_data_accessors
{
for my $_ (@_) {
eval qq{
sub $_ {
carp "Warning: '$_' takes at most 2 arguments...\n"
if \@_ > 2;
my \$self = shift;
\$self->{data}->{qw($_)} = shift if \@_;
return \$self->{data}->{qw($_)};
}
}; die $@ if $@;
}
}
####
mk_data_accessors(qw(method1 method2 method3));
####
sub mk_data_accessors2
{
my $path = shift;
for my $_ (@_) {
eval qq{
sub $_ {
carp "Warning: '$_' takes at most 2 arguments...\n"
if \@_ > 2;
my \$self = shift;
\$self->$path{qw($_)} = shift if \@_;
return \$self->$path{qw($_)};
}
}; die $@ if $@;
}
}
####
mk_data_accessors2('{data}->', qw(method1 method2 method3));