簡體   English   中英

如何使用完整的文件名在 perl 中分割路徑?

[英]How to split a path in perl with full filename?

我想分開一條路有人可以幫助我嗎?

我的輸入是:

$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::TinyFile::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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM