That is, if there's a / in the executable, all well and good: it's been told precisely where it is. Otherwise, check through all the elements of the PATH environment variable, until we find an executable with this name.use File::Basename; my $baseLoc=($0=~/\//)?dirname($0): (grep { -x "$_/$0"} split ":", $ENV{"PATH"})[0];
Note that this will go horribly wrong if somebody invokes your script directly using perl, rather than letting the kernel decide on the interpreter, as a few seconds thought about what'll happen if the execution command was: perl ls
Update:dmerphq has just pointed out in the CB that $0 is always set to the full path and filename, if the user has relied on the normal path searching. So you can get away with just using dirname($0)
see Re: How do I get the full path to the script executing? for a longer explanation.--
Tommy
Too stupid to live.
Too stubborn to die.
In reply to Re: Getting a directory location
by tommyw
in thread Getting a directory location
by wfelde
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |