in reply to Debugger and lexicals

Running your program under 5.12.2 and 5.14.1 causes some kind of infinite loop in the debugger, so the code doesn't run at all :)

Under 5.6.1, I can access $a and $b no problem

$ C:\MinGW\msys\1.0\bin\perl.exe -d mytest2.pl Default die handler restored. Loading DB routines from perl5db.pl version 1.07 Editor support available. Enter h or `h h' for help, or `man perldebug' for more help. main::(mytest2.pl:3): print mt2(55), "\n"; DB<1> s mytest2::mt2(mytest2.pm:11): my $b = $_[0] * 2; DB<1> x $a 0 23 DB<2> x $b 0 undef DB<3> n mytest2::mt2(mytest2.pm:12): return $a + $b; DB<3> x $a 0 23 DB<4> x $b 0 110 DB<5> n 133 Debugged program terminated. Use q to quit or R to restart, use O inhibit_exit to avoid stopping after program termination, h q, h R or h O to get additional info. DB<5> q

For future references, your demos should always add up to 42 :p