如何解決符號鏈接打印腳本的目錄路徑而不是?在不解析符號鏈接的情況下打印perl腳本的路徑
編輯:我從下面意識到,它是不可能使用FindBin,但有沒有辦法獲得腳本的目錄?
use FindBin;
use Cwd;
use Cwd 'abs_path';
use File::Spec::Functions qw(rel2abs);
BEGIN
{
push @INC, "$FindBin::Bin";
}
print "rel2abs:";
print rel2abs("$FindBin::Bin");
print "\n";
print "abs_path:";
print abs_path("$FindBin::Bin");
print "\n";
此腳本會打印:
/tmp/one/two$ perl 3/symlink_to_four/test.pl
rel2abs:/tmp/one/two/3/four
abs_path:/tmp/one/two/3/four
我希望它打印/tmp目錄一/二/ 3/symlink_to_four
/tmp/one/two/3$ ls -l
four
symlink_to_four -> four
爲什麼我需要這個/:桑巴配置在我的Perl腳本要運行的Linux機器中,如果我用\\linux-machine-name
替換Linux路徑的第一部分,並將其餘部分替換爲/
與\
,我得到的Windows路徑,我將它保存在一個文件中,並將被其他腳本使用,例如,在上面的示例中,我試圖將/tmp/one/two/3/symlink_to_four
轉換爲\\linux-machine-name\one\two\3\symlink_to_four
,我知道如何計算出linux-machine-name
,我不想要解決的路徑,因爲我無法弄清楚解決路徑的Windows等價路徑,只有\\linux-machine-name\one\two\3\symlink_to_four
有效,而不是\\linux-machine-name\one\two\3\four
,這是samba配置的方式。
'FindBin'總是解析符號鏈接。你爲什麼要使用鏈接名稱? – ThisSuitIsBlackNot
另外''FindBin :: Bin'總是一個絕對路徑,因此將它傳遞給'rel2abs'或'abs_path'是多餘的。 – ThisSuitIsBlackNot
這是很複雜的解釋:(,我的腳本必須傳遞路徑而不解析符號鏈接到其他腳本 – rodee