in reply to Re^10: replicating the command 'unset LIBPATH' in perl
in thread replicating the command 'unset LIBPATH' in perl
I have now moved the BEGIN to line 1. I thought it didn't matter where you put the BEGIN statement since it executed first at compile time? Obviously not!
I presumed the code had just 'stopped' since using perl -d it didn't allow me to step through the script - but when I checked the log files it had run.
The weird thing is when I include the line
from AnonymousMonks code (below:)"unless( $ENV{+ __FILE__ } eq __FILE__ ){"
I get the uninitialised error message, I can't step through the code, but it connects and works, howeverBEGIN { unless( $ENV{ +__FILE__ } eq __FILE__ ){ delete $ENV{LIBPATH}; $ENV{ +__FILE__ } = __FILE__; exec $^X, __FILE__, @ARGV; } }
I don't get the uninitialsed error, I can step through the script, but I can't connect!BEGIN { if (exists $ENV{LIBPATH}) { delete $ENV{LIBPATH}; exec $^X, __FILE__, @ARGV; } }
I really don't understand what the line:
is trying to do, but without it the solution doesn't work. They both delete the LIBPATH and both do the same exec, but only one works."unless( $ENV{+ __FILE__ } eq __FILE__ ){"
I could live without being able to step through the code in debug mode, although again, I don't understand why the inclusion of Anonymous Monks BEGIN code seems to disable debug mode.
I really do appreciate everyones patience.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^12: replicating the command 'unset LIBPATH' in perl
by Anonymous Monk on May 20, 2010 at 02:07 UTC |