my @vars = ('instance1','instance2',..); foreach (@vars) { eval "sub $_ { my \$self = shift; if (@_) { \$self->{$_} = shift; } return \$self->{$_}; }"; }