如何在Perl中找到该文件

Tre*_*ree 1 perl

例如:

#!/usr/bin/perl
my @arr = ('/usr/test/test.*.con');
my $result = FileExists(\@arr);

print $result ;

sub FileExists {
    my $param = shift;
    foreach my $file (@{$param}) {
        print $file ;
        if (-e $file) {
            return 1;
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它返回0.但我想找到所有狂野的角色......如何解决这个问题?

jkr*_*mer 10

-e无法处理文件全局.改变这一行

my @arr = ('/usr/test/test.*.con');
Run Code Online (Sandbox Code Playgroud)

至

my @arr = glob('/usr/test/test.*.con');
Run Code Online (Sandbox Code Playgroud)

首先展开glob模式,然后检查匹配的文件是否存在.但是,由于glob只返回与模式匹配的现有文件,因此所有文件都会存在.

  • 因为glob实现了shell扩展规则,所以在某些情况下它可以返回不存在的文件.例如`glob('no {file,where}')`返回两个项目,但我的文件系统上都不存在. (2认同)