sub f_bad { 'b' =~ /(.*)/; return $_[0]; } sub f_good1 { my ($var) = @_; 'b' =~ /(.*)/; return $var; } sub f_good2 { { local $1; 'b' =~ /(.*)/; } return $_[0]; } 'a' =~ /(.*)/; print f_bad($1), "\n"; # b 'a' =~ /(.*)/; print f_good1($1), "\n"; # a 'a' =~ /(.*)/; print f_good2($1), "\n"; # a