Perl 检查目录中是否存在具有给定扩展名的文件
我不想指定文件名,只想使用扩展名 像 我想检查./dir目录中是否存在任何.c文件。 可能吗? 由于我没有得到正确的结果,如果有人知道在这种情况下使用-e开关的任何替代或正确方法,请帮助我。这可能会有帮助: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"
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(()=)
akaglob
已经很长时间没有使用子shell了,或者更简洁地说,if(scalar(()=)
akaglob
已经很长时间没有使用子shell了,这不是一个开关,而-e
开关是用于单行程序的开关。这是完全不同的。你有的是。那不是开关,-e
开关是用于单行程序的开关。这是完全不同的。你所拥有的就是这个。