Perl获取父文件夹名称

the*_*eid 10 perl

使用File :: Find获取父目录名称的解决方案是什么?我知道如何只获取文件名或只获取目录路径,但我不知道如何为最后一个包含目录执行此操作.

例如,如果目录是/dir_1/dir_2/dir_3/.../dir_n/*.txt我需要获取' dir_n'名称.

use strict;
use warnings;
use File::Find;

my $dir = "some_path";

find(\&file_handle, $dir); 
sub file_handle {
    /\.txt$/ or return;
    my $fd = $File::Find::dir;
    my $fn = $File::Find::name;
    # ...
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ler 16

给定目录路径,然后将File :: Basename(另一个核心模块)应用于路径以获取目录的最后一部分.

use strict;
use warnings;
use File::Find;
use File::Basename;

my $dir = "some_path";

find(\&file_handle, $dir); 
sub file_handle {
    /\.txt$/ or return;
    my $fd = $File::Find::dir;
    my $fn = $File::Find::name;
    my $dir = basename($fd);
    # ....
}
Run Code Online (Sandbox Code Playgroud)


mar*_*ret 8

#!/usr/local/bin/perl -w

use strict;
use File::Basename;
use Cwd 'abs_path';

my $f = "../some/path/to/this_directory/and_filename";  
my $d = basename(dirname(abs_path($f)));
say $d;
Run Code Online (Sandbox Code Playgroud)

返回"this_directory"