我有一個腳本/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