>perl -wMstrict -le "print level2(); sub level1 { sub level2 { return 'level2(): foo' } print 'level1(): ', level2(); } level1(); print level2(); " level2(): foo level1(): level2(): foo level2(): foo #### >perl -wMstrict -le "sub level1 { my $x = shift || 'default'; local *foo = sub { return 'foo' . $x }; print foo(); } level1('bar'); level1(); foo(); " foobar foodefault Undefined subroutine &main::foo called at -e line 1.