有一個目錄路徑:我如何獲得目錄的路徑在Perl
my $temp = "https://stackoverflow.com/a/b/c/d";
my $upDirectory = dirname($temp);
這將返回 「/ A/B/C」。 但我只需要「c」。我必須將它與一個字符串進行比較以確定它是否是正確的目錄。
有沒有辦法比「/」分開其他?我不想用這個。 Perl代碼必須在多個平臺上使用。 splitdir可以幫忙嗎?
有一個目錄路徑:我如何獲得目錄的路徑在Perl
my $temp = "https://stackoverflow.com/a/b/c/d";
my $upDirectory = dirname($temp);
這將返回 「/ A/B/C」。 但我只需要「c」。我必須將它與一個字符串進行比較以確定它是否是正確的目錄。
有沒有辦法比「/」分開其他?我不想用這個。 Perl代碼必須在多個平臺上使用。 splitdir可以幫忙嗎?
有,當然有很多方法可以做到,但如果你主要關注的是移植到其他平臺則File::Spec可能是一個合理的選擇。尋找splitpath
和splitdir
。
謝謝@ ask-bjorn-hansen 我試過splitdir。有效。但我也試着用「basename」來做這件事。它工作得很好,沒有太多麻煩。 '使用File :: Basename; my $ temp =「/ a/b/c/d」; my $ upDirectory = dirname($ temp); my $ dirName = basename($ upDirectory);' #它返回「c」。 – user1602400 2012-08-16 11:51:06
我之所以不建議文件::基名是,我不知道,如果在你的例子/ d是一個文件名或目錄,如果它是一個目錄,如果你的代碼將是有關添加(或不)一個斜線一致。沒有經過測試,我認爲在使用dirname/basename時必須小心。有了File :: Spec的分割函數,我認爲會發生什麼會更明顯。 – 2012-08-20 05:02:51
Path::Class
強制性溶液:
use Path::Class qw(dir);
dir('/a/b/c/d')->parent->dir_list(-1)
# expression returns 'c'
$溫度=〜S/\/[^ \ /] + $/\ //; – CyberDem0n 2012-08-16 06:33:58
你想要'basename($ upDirectory)'的值,我相信。 – 2012-08-16 06:40:12
@JonathanLeffler謝謝,這工作。 – user1602400 2012-08-16 12:01:18