我有一个脚本/a/b/c/a.pl
下的脚本。但我通过使用访问此。当我使用符号链接路径运行脚本时,如何读取路径?perl符号链接路径
- 当我使用
/a/b/c/a.pl
,我应该得到/a/b/c
- 当我使用
/a/sl/c/a.pl
,我应该得到/a/sl/c
我有一个脚本/a/b/c/a.pl
下的脚本。但我通过使用访问此。当我使用符号链接路径运行脚本时,如何读取路径?perl符号链接路径
/a/b/c/a.pl
,我应该得到/a/b/c
/a/sl/c/a.pl
,我应该得到/a/sl/c
我不知道你问什么,但FindBin
可能会做什么你想。请参阅perldoc FindBin
并阅读有关$Bin
和$RealBin
。
如果FindBin
是不是你想要的,尝试:
#!/usr/bin/env perl
use strict;
use warnings;
use Cwd;
use File::Basename;
my $i_am_at = dirname($0);
if($i_am_at eq '.'){
$i_am_at = cwd();
}
print "I am at $i_am_at\n";
FindBin没问题,但我不希望链接被解析 – Kamikaze 2011-03-12 02:02:42
对于* nix系统至少,你可以使用$ENV{PWD}
或`pwd`
。
'$ ENV {PWD}'只会得到您的工作目录,这可能与脚本的位置无关。 – 2011-03-11 21:34:27
啊,对。我假设脚本正从它所在的目录运行(_i.e._,'cd/a/sl/c /; perl a.pl'),我有些被卡住了。可能是因为我正在用'perl -e ..'测试。 – rayners 2011-03-12 03:39:11
'使用File :: Basename; my $ script_path = dirname($ 0); if($ script_path eq“。”){ $ script_path = $ ENV {PWD}; } #works for me' – Kamikaze 2011-03-14 21:19:56
认为$0
是你之后的变量。
是不是这个死亡的专辑之一的名字? – CheeseConQueso 2011-03-11 20:35:17