无法打印文件中的行

时间:2014-02-20 12:46:29

标签: perl

对我来说很奇怪但是在下面的代码中我既没有得到任何错误也没有结果:(

use strict;
    use warnings;
    use File::Find;

    my $path = $ARGV[0];
    find({ wanted => \&GetappropriateFile }, $path);
    my @all_file;
    sub GetappropriateFile
    {
      my $file = $_;

      #my @all_file;
     # print "$file\n";
      if ( -f and /traces[_d+]/)
      {
       print "$file\n";
        # push(@all_file,$file);
         open(FH, "<", $file) or die "cannot open file:$!\n";
          while(my $line = <FH>){
          print "$line\n";
          $line =~ /Cmd line: com.android.phone/g;
          #print "$line\n";
          push(@all_file,$file);
          last;
          #print "$file\n";
        }
    close(FH);
    }

    } 

我使用的以下文本文件的Regx - &gt; / traces [_d +] /

traces_com.android.phone_01-22-2014_01-15-54 traces_01-22-2014_06-24-25 traces_com.skype.raider_01-22-2014_01-15-54 traces_com.android.mms_01-22-2014_01-15-54

2 个答案:

答案 0 :(得分:3)

您的正则表达式匹配以下文件:

traces_
tracesd
traces+

这就是你想要的吗?

我猜你的意思是:

/traces(_\d+)?/

匹配:

traces
traces_1
traces_015
traces_8675309

......但我真的不知道你想要什么。

答案 1 :(得分:1)

如果文件以.txt或.tbl等任何类型的扩展名结尾。此代码不起作用,因为找不到trace_ [numbers] .txt与regx / traces [_d +] /。如果您正在使用Windows,则可能无法看到文件的扩展名。 我建议你使用以下模式/traces [_d+].txt/或类似的东西。

另一种可能是您尝试打开的文件为空。