2011-03-11 158 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是你之後的變量。