Perl 我可以在数组中收集find(\&;wanted,@目录)的输出吗
我正在编写一个脚本,它将遍历目录(也包括subdir),并将所需的文件推送到一个数组中,以便我可以处理每个文件 这是我的密码:Perl 我可以在数组中收集find(\&;wanted,@目录)的输出吗,perl,Perl,我正在编写一个脚本,它将遍历目录(也包括subdir),并将所需的文件推送到一个数组中,以便我可以处理每个文件 这是我的密码: use strict; use warnings; use File::Find; my $path = $ARGV[0]; find({ wanted => \&GetappropriateFile }, $path); sub GetappropriateFile { my $file = $_; my @all_file; # prin
use strict;
use warnings;
use File::Find;
my $path = $ARGV[0];
find({ wanted => \&GetappropriateFile }, $path);
sub GetappropriateFile
{
my $file = $_;
my @all_file;
# print "$file\n";
if ( -f and /traces[_d+]/)
{
#print "$file\n";
open(my $fh, "<", $file) or die "cannot open file:$!\n";
while( my $line = <$fh>){
$line =~ /Cmd\sline:\s+com.android*/;
push(@all_file,$file);
#print "$file\n";
}
close($fh);
#print"@all_file\n";
}
}
使用严格;
使用警告;
使用File::Find;
my$path=$ARGV[0];
查找({wanted=>\&getpropertefile},$path);
子文件
{
我的$file=$\uux;
我的@all_文件;
#打印“$file\n”;
if(-f和/道[_d+]/)
{
#打印“$file\n”;
打开(my$fh),将@all_文件的声明置于函数外部,并在find()完成后使用它
my @all_file;
sub GetappropriateFile
{
..
}
您也可以在成功匹配后停止文件读取
if ($line =~ /Cmd\sline:\s+com.android*/) {
push(@all_file, $file);
last;
}
最好避免全球VAR
use strict;
use warnings;
use File::Find qw( find );
sub IsAppropriateFile {
my ($file) = @_;
if (-f $file && $file =~ /traces[_d+]/) {
open(my $fh, "<", $file) or die "cannot open file:$!\n";
while ( my $line = <$fh> ) {
if ($line =~ /Cmd\sline:\s+com.android*/) {
return 1;
}
}
}
return 0;
}
{
my $path = $ARGV[0];
my @matching_files;
find({
wanted => sub {
push @matching_files, $_ if IsAppropriateFile($_);
},
}, $path);
print("$_\n") for @matching_files; # Or whatever.
}
使用严格;
使用警告;
使用文件::Find qw(Find);
子文件不适当{
我的($file)=@;
如果(-f$file&&$file=~/traces[\u d+]/){
打开(我的$fh,“这里我的问题是,我可以在每个文件上迭代一个我的一个吗?如果是,那么如何迭代?@Maverick在遍历find()
之后,你可以使用@all_file
。是否真的需要使用花括号?我是说第20行和第31行。@Maverick“花括号”–是的,它们在这里是有意义的,因为它们限制了$path
和@匹配的_文件
变量的可见性。它们不是必需的,但这是一种很好的做法(Perl具有块范围,因此它们的可见性在右括号处结束)@Maverick,答案的全部要点是显示收集名称的变量如何不必是全局变量,因此卷曲与答案相关,因为它们突出了这一点。(我个人在我的程序中总是使用它们,原因有很多。)@ikegam..我收到了这个错误“匿名哈希中的奇数元素”当我搜索这个错误时,我知道“want=>sub{”是我们正在做的事情wrong@Maverick,我丢失了一个“}”,而您将其添加到了错误的位置。已修复。