sub Instance_Var ($) { my $package=__PACKAGE__; my ($var)=@_; my $accessor_name = "$package\::$var"; my $acc = sub { my $t = shift; $t->{$var}=$_[0] if @_; $t->{$var}; }; # Now install our anonymous subroutine as $package::$var no strict 'refs'; *{ $accessor_name } = $acc; }