如何使用File :: Find打印仅具有相对路径的文件?

Spa*_*ace 5 perl file-find

我在下面的代码中使用File :: Find来查找/home/user/data路径中的文件.

use File::Find;

my $path = "/home/user/data";
chdir($path);
my @files;

find(\&d, "$path");

foreach my $file (@files) {
print "$file\n";
}

sub d {
-f and -r and push  @files, $File::Find::name;
}
Run Code Online (Sandbox Code Playgroud)

当我将dir路径更改为我需要搜索文件的路径时,但它仍然为我提供了完整路径的文件.即

/home/user/data/dir1/file1
/home/user/data/dir2/file2
and so on...
Run Code Online (Sandbox Code Playgroud)

但我希望输出像

dir1/file1
dir2/file2
and so on...
Run Code Online (Sandbox Code Playgroud)

任何人都可以建议我找到文件的代码,只显示当前的工作目录?

Ins*_*lah 13

以下将打印$base相对于$base(不是当前目录)下的所有文件的路径:

#!/usr/bin/perl
use warnings;
use strict;

use File::Spec;
use File::Find;

# can be absolute or relative (to the current directory)
my $base = '/base/directory';
my @absolute;

find({
    wanted   => sub { push @absolute, $_ if -f and -r },
    no_chdir => 1,
}, $base);

my @relative = map { File::Spec->abs2rel($_, $base) } @absolute;
print $_, "\n" for @relative;
Run Code Online (Sandbox Code Playgroud)