in reply to Changing $@ in debug mode
This is DB::eval(), the subroutine that the debugger uses to protect itself from you. Anything that you run here can see all of the lexical variables that are currently in scope - and it saves and restores $@ so it can show it to you should the eval of the code you type in sets it. This means that manipulating $@ in the debugger won't work.
DB::eval is also the reason that my $x = "foo" "doesn't work" under the debugger - the creation of the lexical variable happens inside DB::eval, so it comes into existence and disappears again as soon as DB::eval exits.
|
|---|