in reply to Getting a directory location
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Getting a directory location
by wfelde (Initiate) on Jul 10, 2002 at 18:19 UTC |