2017-08-03 118 views
-1

我想用Perl獲取文件的絕對路徑。該文件位於/a/b/c/file.txt。所以,我想得到/a/b/c/。目前我不能使用Cwd::cwd(),因爲實際的工作目錄是/a/b/。這不是一個錯誤,因爲Perl腳本是從/a/b/調用的。用Perl獲取絕對路徑

那麼,有沒有一個Perl函數來捕捉,或者我必須使用正則表達式來找到它?

+0

您需要'relative'或'absolut'路徑嗎?如果'親戚','相對'什麼? – Jens

+0

絕對指的是'/ a/b/c/file.txt'。我想要'/ a/b/c /'。我把它稱爲相對的!這不正確嗎?如果我說父母,那麼有些人可能會想到'c /'。 – mahmood

+0

在我的理解中,相對路徑與某些事物相關,如cwd。一個絕對路徑從根目錄 – Jens

回答

5
use File::Basename; 
my $path = "https://stackoverflow.com/a/b/c/file.txt"; 
my ($filename, $dir) = fileparse($path); 
2

如果文件名是沒有特殊字符,並且被格式化爲name.ext,您可以使用正則表達式像這樣的:

(.*\/)[\w-]+\.[\w]{3} 

文件名可以由包括AZ,az,0-9和 - (減號)

+0

在文件名中是'-'特殊字符嗎? – mahmood

+0

@mahmood我已經添加 - 作爲允許文件名字符 – Nino