Perl 如何使用grep(@specifiers)实现File::Find::Rule
结果:Perl 如何使用grep(@specifiers)实现File::Find::Rule,perl,grep,Perl,Grep,结果: #!/usr/bin/env perl use strict; use warnings; use File::Find; use File::Find::Rule; my $dir = "/home/user/etc"; my @files = File::Find::Rule->file->name('\*.*')->grep(qr/localhost/)->start($dir); my $ref_array_1 = \@files; print "$
#!/usr/bin/env perl
use strict;
use warnings;
use File::Find;
use File::Find::Rule;
my $dir = "/home/user/etc";
my @files = File::Find::Rule->file->name('\*.*')->grep(qr/localhost/)->start($dir);
my $ref_array_1 = \@files;
print "$ref_array_1\n";
预期结果:
包含字符串“localhost”的文件列表
现在,为了用“确认”验证结果:
\
开头并包含
的文件上。除去
ack -l localhost /home/user/etc
/home/user/etc/host
/home/user/etc/server
->name('\*.*')
到
@文件
的元素没有任何意义。改变
->in($dir)
到
print("$_\n") for @files;
或
` #!/usr/bin/env perl使用严格;使用警告;使用File::Find;使用File::Find::Rule;my$dir=“/home/user/etc”;my@files=File::Find::Rule->File->grep(qr/localhost/)->start($dir);打印@files;`$perl ruletest.pl打印(…)在ruletest.pl第13行被解释为函数。File::Find::Rule=HASH(0xe57420)@kamal,这不是我发布的内容。您引入了两个更改,它们都是错误的。所以不能使用start($dir)吗?是否必须在($dir)中使用?我想看看start($dir)是否有效,因为我需要遍历目录。不确定我做的其他错误更改是什么当然可以使用
start($dir)
,但它与($dir)中的功能不同。具体来说,它不会返回文件列表。阅读文档。@ikegami您的第2点与您在代码中所做的相反。我想你是想颠倒这两条线。
->in($dir)
my $ref_array_1 = \@files;
print "$ref_array_1\n";
print("$_\n") for @files;
my $dir = "/home/user/etc";
my @files = File::Find::Rule->file->grep(qr/localhost/)->in($dir);
print("$_\n") for @files;
my $dir = "/home/user/etc";
print("$_\n")
for File::Find::Rule->file->grep(qr/localhost/)->in($dir);