This reply is very late, but I think needs adding. rel2abs($0) will probably break if you are running setuid on a modern Unix. To avoid a race condition, these kernels do not pass the filename of a setuid script to its interpreter but rather a "virtual" filename (somewhere in /proc on Linux if I'm not mistaken) which is rigidly associated to the file the kernel opened. The filename Perl sees in that case and consequently the $0 value would bear no relation to the actual location of the script. (Of course, FindBin will not work any better in that case.)
in reply to FindBin is broken (RE: How do I get the full path to the script executing?)
in thread files
Makeshifts last the longest.