my %Vals; for ( qw(foo bar) ) { my $method = shift; *$method = sub { my $self = shift; my $old = $Vals{$method}{$self}; $Vals{$method}{$self} = @_ ? $_[0] : (); return $old; }; }