sub static { my $called = join ":", caller(); my $uniq; for (@_) { if (!ref) { tie $_, 'Tie::Static', $called, $uniq++ } elsif (ref eq 'SCALAR') { tie $$_, 'Tie::Static', $called, $uniq++ } elsif (ref eq 'ARRAY') { tie @$_, 'Tie::Static', $called, $uniq++ } elsif (ref eq 'HASH') { tie %$_, 'Tie::Static', $called, $uniq++ } } } # usage static my $foo; static \ my ($foo, @bar, %baz);