$ cat x.pl use warnings; use strict; sub x { my $y = 123; sub { $y += shift; print "$y\n"; print shift->(), "\n"; } } my $z = x; my $foo = "abc"; $DB::single=1; $z->(111, sub { return $foo."def"; }); $ perl -d x.pl ... main::(x.pl:11): my $z = x; DB<1> c main::(x.pl:16): }); DB<1> s main::CODE(0x543ed97f20a0)(x.pl:6): 6: $y += shift; DB<1> y 0 $y = 123 DB<2> s main::CODE(0x543ed97f20a0)(x.pl:7): 7: print "$y\n"; DB<2> y 0 $y = 234 DB<3> s 234 main::CODE(0x543ed97f20a0)(x.pl:8): 8: print shift->(), "\n"; DB<3> s main::CODE(0x55d4d6a31da8)(x.pl:15): 15: return $foo."def"; DB<3> y 0 $foo = 'abc' $z = CODE(0x543ed97f20a0) -> &main::__ANON__[x.pl:9] in x.pl:5-9