n-a*_*der 3 perl relative-path
我需要找到我正在运行的Perl脚本的完整路径,即
对于〜/ dir/my.pl我需要它是"/home/user/dir/my.pl".该$0给我"〜/ DIR/my.pl".
对于./my.pl我仍然需要"/home/user/dir/my.pl"
等等谢谢!
使用FindBin模块:
$ cat /tmp/foo/bar/baz/quux/prog
#! /usr/bin/perl
use FindBin;
print "$FindBin::Bin/$FindBin::Script\n";
$ PATH=/tmp/foo/bar/baz/quux prog
/tmp/foo/bar/baz/quux/prog
$ cd /tmp/foo/bar/baz/quux
$ ./prog
/tmp/foo/bar/baz/quux/prog
Run Code Online (Sandbox Code Playgroud)
听起来你正在寻找File :: Spec中的rel2abs函数.例如:
#!/usr/bin/perl
use File::Spec;
my $location = File::Spec->rel2abs($0);
print "$location\n";
Run Code Online (Sandbox Code Playgroud)
这将以您描述的方式解决$ 0:
$ ./myfile.pl
/Users/myname/myfile.pl
$ ~/myfile.pl
/Users/myname/myfile.pl
Run Code Online (Sandbox Code Playgroud)
或者,您可以以完全相同的方式使用Cwd :: abs_path.
| 归档时间: |
|
| 查看次数: |
2608 次 |
| 最近记录: |