Perl 检查目录中是否存在具有给定扩展名的文件

Perl 检查目录中是否存在具有给定扩展名的文件,perl,Perl,我不想指定文件名,只想使用扩展名 像 我想检查./dir目录中是否存在任何.c文件。 可能吗? 由于我没有得到正确的结果,如果有人知道在这种情况下使用-e开关的任何替代或正确方法,请帮助我。这可能会有帮助: my @list = <*.c>; if (scalar @list == 0) { print "No .c File exist."; } else { print "Existing C files are\n", join (", ", @list), "\n"

我不想指定文件名,只想使用扩展名

我想检查./dir目录中是否存在任何.c文件。 可能吗? 由于我没有得到正确的结果,如果有人知道在这种情况下使用-e开关的任何替代或正确方法,请帮助我。

这可能会有帮助:

my @list = <*.c>;

if (scalar @list == 0) {
  print "No .c File exist.";
} else {
  print "Existing C files are\n", join (", ", @list), "\n";
}
其中,
$path
是一个指示目录路径的变量。

这可能有助于:

my @list = <*.c>;

if (scalar @list == 0) {
  print "No .c File exist.";
} else {
  print "Existing C files are\n", join (", ", @list), "\n";
}

其中,
$path
是一个指示目录路径的变量。

您可能对该模块感兴趣,它是Perl版本5中的核心模块。它是递归的,这可能是您想要的,也可能不是您想要的

use strict;
use warnings;
use File::Find;
use Data::Dumper;   # for output only

my @found;
find(sub { /\.c$/i && push @found, $File::Find::name; }, 'dir');
print Dumper \@found;
$File::Find::name
包含文件的完整路径。正则表达式与包含基本文件名的
$\uuu
匹配。请注意,
find()
子例程的第一个参数是匿名子例程,即代码块

如果要检查空输出,请在标量上下文中使用数组返回其大小。零(假)大小表示未找到匹配项

if (@found) {
    print "Found files: @found\n";
} else { ...}

您可能对该模块感兴趣,它是Perl版本5中的核心模块。它是递归的,这可能是您想要的,也可能不是您想要的

use strict;
use warnings;
use File::Find;
use Data::Dumper;   # for output only

my @found;
find(sub { /\.c$/i && push @found, $File::Find::name; }, 'dir');
print Dumper \@found;
$File::Find::name
包含文件的完整路径。正则表达式与包含基本文件名的
$\uuu
匹配。请注意,
find()
子例程的第一个参数是匿名子例程,即代码块

如果要检查空输出,请在标量上下文中使用数组返回其大小。零(假)大小表示未找到匹配项

if (@found) {
    print "Found files: @found\n";
} else { ...}

或者,更简洁地说,
if(scalar(()=)
aka
glob
已经很长时间没有使用子shell了,或者更简洁地说,
if(scalar(()=)
aka
glob
已经很长时间没有使用子shell了,这不是一个开关,而
-e
开关是用于单行程序的开关。这是完全不同的。你有的是。那不是开关,
-e
开关是用于单行程序的开关。这是完全不同的。你所拥有的就是这个。