从完整路径获取文件名

SIM*_*MEL 4 regex perl

我需要从完整的文件路径获取文件的名称.我试过用:

$out_fname =~ s/[\/\w+\/]+//;

但它"吃掉"文件名的purts.

例:

对于文件: /bla/bla/folder/file.part.1.file,它返回: .part.1,file

cod*_*ict 16

你可以做:

use File::Basename;

my $path = "/bla/bla/folder/file.part.1.file";
my $filename = basename($path);
Run Code Online (Sandbox Code Playgroud)

  • File :: Basename在Core中(即附带Perl),但我不认为它是'内置',只有`perldoc perlfunc`中的那些函数. (3认同)

plu*_*lus 5

除了文件::基名,这里还有路径::类,它可以很方便的操作比较复杂,有目录,或跨平台/文件系统操作处理时尤为如此.在这种情况下,它可能有点过分,但可能值得了解.

use Path::Class;

my $file = file( "/bla/bla/folder/file.part.1.file" );
my $filename = $file->basename;
Run Code Online (Sandbox Code Playgroud)