use warnings; use v5.14; outer1(); exit 0; sub outer1 { my $hello = 'hello'; # local *inner = sub { my $inner = sub { say $hello; }; outer2(); } sub outer2 { # inner(); $inner->(); } __END__ Global symbol "$inner" requires explicit package name at /tmp/subtst.pl line 20. Execution of /tmp/subtst.pl aborted due to compilation errors.