use strict; my $k = 1; print "wanted: \$k = $k, got " . InvestigateValue() . "\n"; my $k = 2; print "wanted: \$k = $k, got " . InvestigateValue() . "\n"; sub InvestigateValue { return defined $k ? $k : 'undef'; } #### wanted: $k = 1, got 1 wanted: $k = 2, got 2 #### wanted: $k = 1, got undef wanted: $k = 2, got 2