使用File :: Find :: Rule时无法调用方法“_compile”错误

时间:2016-02-11 13:26:39

标签: perl

在/homes/sauravb/perl5/lib/perl5/File/Find/Rule.pm第292行没有包或对象引用时,无法调用方法“_compile”

#!/usr/bin/perl
use strict;
use warnings;
#use File Perl Module
#use Cwd sub perl module
use File::Find::Rule;
use Cwd;
use Cwd 'chdir';

chdir "/volume/regressions/results/JUNOS/HEAD/EABUPDTREGRESSIONS/15.1/15.1F5";

my $cwd = getcwd();

my $fh;
sub fileindex {
        open($fh, ">", "/homes/sauravb/line_with_X-TESTCASE.txt" ) || die $!;

        my $rule =  File::Find::Rule->new;

        my @files = $rule->any (File::Find::Rule->name('*.log'),
                                File::Find::Rule->in($cwd)
        );


        #print $fh map{ "$_\n" } @files;

}


fileindex();

1 个答案:

答案 0 :(得分:4)

any允许您指定备用标准集。例如,以下内容将返回名称以.log.txt结尾的所有文件。

my @files =
   File::Find::Rule
   ->any(
      File::Find::Rule->name('*.log'),
      File::Find::Rule->name('*.txt'),
   )
   ->in($dir_qfn);

相反,您将一个条件以及目录中所有文件的名称传递给any。这是不正确的。

您是否只想要目录中的日志文件列表?如果是这样,你只需要

my @files =
   File::Find::Rule
   ->name('*.log')
   ->in($dir_qfn);

或者如果你想确保它们是纯文件(而不是目录),

my @files =
   File::Find::Rule
   ->name('*.log')
   ->file
   ->in($dir_qfn);