2011-03-11 141 views
1

我有一个脚本/a/b/c/a.pl下的脚本。但我通过使用访问此。当我使用符号链接路径运行脚本时,如何读取路径?perl符号链接路径

  • 当我使用/a/b/c/a.pl,我应该得到/a/b/c
  • 当我使用/a/sl/c/a.pl,我应该得到/a/sl/c
+0

是不是这个死亡的专辑之一的名字? – CheeseConQueso 2011-03-11 20:35:17

回答

3

我不知道你问什么,但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"; 
+0

FindBin没问题,但我不希望链接被解析 – Kamikaze 2011-03-12 02:02:42

-1

对于* nix系统至少,你可以使用$ENV{PWD}`pwd`

+0

'$ ENV {PWD}'只会得到您的工作目录,这可能与脚本的位置无关。 – 2011-03-11 21:34:27

+0

啊,对。我假设脚本正从它所在的目录运行(_i.e._,'cd/a/sl/c /; perl a.pl'),我有些被卡住了。可能是因为我正在用'perl -e ..'测试。 – rayners 2011-03-12 03:39:11

+0

'使用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

1

认为$0是你之后的变量。

相关问题