【问题标题】:How can Perl make pattern match equal to grep -e [!] on a file [closed]Perl如何使模式匹配等于文件上的grep -e [!] [关闭]
【发布时间】:2014-02-12 13:44:41
【问题描述】:
    #!/usr/bin/perl

    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {

        open(FH,"<", 'thefile.txt') or die;
        my $filTMP=undef;
        while(<FH>){
            chomp();
            $filTMP=<FH>;
            if( $filTMP=~ /\!/){ # extracting all exclamation marks. 
        print $filTMP;

    }
    }
}

我的新手代码的问题是列表中的第一个匹配单词被显示,但之后出现了愤怒的红色文本“模式匹配中的未初始化值 $filetmp (m//)”。据我所见, $filTMP 已初始化。需要帮助:)。

【问题讨论】:

  • 你从命令行读入了什么?
  • 问题是您在两个不同的位置读取一行 (&lt;FH&gt;)。

标签: regex perl file-handling


【解决方案1】:

尝试将您的代码更改为:

sub main {
    open my $file, '<', 'thefile.txt' or die;
        while(<$file>){
            chomp;
            print "$_\n" if /\!/; 
        }
}

【讨论】:

  • 是的,效果更好。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-13
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多