我想分道扬镳,谁能帮帮我?
我的输入是:
$getpath = "/u/project/path/file.name";
我想拆分/u/project/path
一个变量和file.name
另一个变量。
File::Basename可以帮助您提取所需的信息(并且是核心模块的一部分)
my($filename, $directories, $suffix) = fileparse($path);
首先,有很多perl模块可以做你想做的,尝试在CPAN上搜索。其次,我建议使用 File::Spec 模块。例如:
use File::Spec;
($volume,$directories,$file) = File::Spec->splitpath( $path );
那么 $directories 将是“/u/project/path”,而 $file 将是“file.name”。
File::Spec 模块支持五种操作系统:Unix(Linux)、Mac、Win32、OS2、VMS。而且这个模块还提供了大量其他文件操作,如 catpath、updir、file_name_is_absolute 等。您无需在不同系统上更改代码。
参考:文件::规范
my($path, $file) = $getpath =~ m{(.+)/([^/]+)$};
也有很好的跨平台模块,请参阅Path::Tiny和File::Spec。
my $getpath = "/u/project/path/file.name";
my @arr=split /\//,$getpath;
my $filename=$arr[(scalar(@arr))-1]; #will give you the filename
my $path_no_filename= join "/",@arr[0..(scalar(@arr)-2)]; #will give everything except the filename
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