如何在perl中使用完整文件名拆分路径?

如何在perl中使用完整文件名拆分路径?,perl,path,split,Perl,Path,Split,我想分开一条路有人能帮我吗 我的意见是: $getpath = "/u/project/path/file.name"; 我想在一个变量中拆分/u/project/path,在另一个变量中拆分file.name my($path, $file) = $getpath =~ m{(.+)/([^/]+)$}; 这方面也有很好的跨平台模块,请参阅和。可以帮助您提取所需信息(并且是核心模块的一部分) 首先,有许多perl模块可以做您想做的事情,请尝试在CPAN上搜索。 其次,我建议使用File::

我想分开一条路有人能帮我吗

我的意见是:

$getpath = "/u/project/path/file.name";
我想在一个变量中拆分
/u/project/path
,在另一个变量中拆分
file.name

my($path, $file) = $getpath =~ m{(.+)/([^/]+)$};
这方面也有很好的跨平台模块,请参阅和。

可以帮助您提取所需信息(并且是核心模块的一部分)


首先,有许多perl模块可以做您想做的事情,请尝试在CPAN上搜索。 其次,我建议使用File::Spec模块。例如:

use File::Spec;
($volume,$directories,$file) = File::Spec->splitpath( $path );
然后,$目录将是“/u/project/path”,而$file将是“file.name”

Spec模块支持五种操作系统:Unix(Linux)、Mac、Win32、OS2和VMS。 该模块还提供大量其他文件操作,如catpath、updir、文件名、绝对值等。 您不需要在不同的系统上更改代码

参考:

快速测试:

> perl -Mojo -E 'my $f = f("/u/project/path/file.name"); say $f->dirname, "::", $f->basename' 
/u/project/path::file.name

您可以使用负下标从以下结尾访问元素:
$filename=$arr[-1]
,并使用隐式标量上下文作为范围内的算术运算符:
$path=join'/',@arr[0..@arr-2]
。但是说
$filename=pop@arr$path=join'/',@arr
。如果不想使用模块,我认为这是学习编程的最佳方式。谢谢你的支持!!:)我只是对基于正则表达式的解决方案感兴趣:我必须用路径构建名称。。实际上,我刚刚开始学习perl并学习了一些东西。。非常感谢您的支持!!:)谢谢你。。实际上,我刚刚开始学习perl并学习了一些东西。。非常感谢您的支持!!:)谢谢你。。实际上,我刚刚开始学习perl并学习了一些东西。。非常感谢您的支持!!:)@Mak_Thareja欢迎您,也欢迎您来到奇妙的Perl世界:)是的,它看起来很棒
use File::Spec;
($volume,$directories,$file) = File::Spec->splitpath( $path );
my $f = Mojo::File->new($getpath);
print($f->dirname, "::", $f->basename);
> perl -Mojo -E 'my $f = f("/u/project/path/file.name"); say $f->dirname, "::", $f->basename' 
/u/project/path::file.name