2012-08-16 33 views
0

有一個目錄路徑:我如何獲得目錄的路徑在Perl

my $temp = "https://stackoverflow.com/a/b/c/d"; 
my $upDirectory = dirname($temp); 

這將返回 「/ A/B/C」。 但我只需要「c」。我必須將它與一個字符串進行比較以確定它是否是正確的目錄。

有沒有辦法比「/」分開其他?我不想用這個。 Perl代碼必須在多個平臺上使用。 splitdir可以幫忙嗎?

+0

$溫度=〜S/\/[^ \ /] + $/\ //; – CyberDem0n 2012-08-16 06:33:58

+2

你想要'basename($ upDirectory)'的值,我相信。 – 2012-08-16 06:40:12

+0

@JonathanLeffler謝謝,這工作。 – user1602400 2012-08-16 12:01:18

回答

5

有,當然有很多方法可以做到,但如果你主要關注的是移植到其他平臺則File::Spec可能是一個合理的選擇。尋找splitpathsplitdir

+0

謝謝@ 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

+0

我之所以不建議文件::基名是,我不知道,如果在你的例子/ d是一個文件名或目錄,如果它是一個目錄,如果你的代碼將是有關添加(或不)一個斜線一致。沒有經過測試,我認爲在使用dirname/basename時必須小心。有了File :: Spec的分割函數,我認爲會發生什麼會更明顯。 – 2012-08-20 05:02:51

1

Path::Class強制性溶液:

use Path::Class qw(dir); 
dir('/a/b/c/d')->parent->dir_list(-1) 
# expression returns 'c' 
相關問題