sub _setter_getter_maker { my $subname = shift; my $funcref; $funcref = eval<<"END"; sub { my(\$self, \$$subname) = \@_; \$self->{'$subname'} = \$$subname if defined \$$subname; return \$self->{'$subname'}; }; END return $funcref; }