#!perl use v5.10; use strict; use warnings; my $a = shift; sub f { say "global f"; } sub g { say "global g"; my ($a) = @_; sub f { say "local f ($a)"; # line 16 } f(); } f(); g(shift); f(); __END__ C:\Temp>localsub.pl Variable "$a" will not stay shared at C:\Temp\localsub.pl line 16. Subroutine f redefined at C:\Temp\localsub.pl line 15. Use of uninitialized value $a in concatenation (.) or string at C:\Temp\localsub.pl line 16. local f () global g Use of uninitialized value $a in concatenation (.) or string at C:\Temp\localsub.pl line 16. local f () Use of uninitialized value $a in concatenation (.) or string at C:\Temp\localsub.pl line 16. local f () C:\Temp>localsub.pl AAA BBB Variable "$a" will not stay shared at C:\Temp\localsub.pl line 16. Subroutine f redefined at C:\Temp\localsub.pl line 15. Use of uninitialized value $a in concatenation (.) or string at C:\Temp\localsub.pl line 16. local f () global g local f (BBB) local f (BBB)