2014-02-12 59 views
-1
#!/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; 

    } 
    } 
} 

與我的新手代碼的問題是,在列表中的第一個匹配的詞diplayed,但在那之後憤怒的紅色文字「未初始化值在$ patt匹配(m //)的$ filetmp「出現。據我所見,$ filTMP已初始化。需要幫助:)。的Perl如何才能使模式匹配等於用grep -e [!]上的文件

+0

你在命令行讀? – fugu

+1

問題是你在兩個不同的地方讀一行('')。 – ikegami

回答

0

試着改變你的代碼如下:

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

是的,這樣效果更好。謝謝您的幫助! – user3301823