I have Perl script and need to determine the full path and filename of the script during execution. I discovered that depending on how you call the script $0 varies and sometimes contains the fullpath+filename and sometimes just filename. Because the working directory can vary as well I can’t think of a way to reliably get the fullpath+filename of the script.
Anyone got a solution?
There are a few ways:
$0is the currently executing script as provided by POSIX, relative to the current working directory if the script is at or below the CWDcwd(),getcwd()andabs_path()are provided by theCwdmodule and tell you where the script is being run fromFindBinprovides the$Bin&$RealBinvariables that usually are the path to the executing script; this module also provides$Script&$RealScriptthat are the name of the script__FILE__is the actual file that the Perl interpreter deals with during compilation, including its full path.I’ve seen the first three (
$0, theCwdmodule and theFindBinmodule) fail undermod_perlspectacularly, producing worthless output such as'.'or an empty string. In such environments, I use__FILE__and get the path from that using theFile::Basenamemodule: