2017-08-03 720 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