2013-05-20 60 views
1

我想在perl中讀取一個文件,之後,用戶可以輸入任何字符串,並且grep會嘗試查找在文件讀取中輸入的字符串。只有在用戶輸入任何內容或空格字符時纔會退出。這裏是我的代碼是不工作:如何在perl中讀取grep文件

#! usr/bin/perl 
use warnings; 
use strict; 

open MATCHSTRING,"matchstring"; 
my @lines = <MATCHSTRING>; 

while (<>) { 
    chomp; 
    my @match = grep {/\b$_\b/s} @lines; 
    print @match; 
    } 

我仍然缺乏它就會退出,一旦沒有被輸入或換行或空格字符的條件。

回答

1

有與my @match = grep {/\b$_\b/s} @lines;作爲grep的你的例子可能出現的問題是不是與用戶輸入的工作,但只得到@lines內容。它的作用是這樣的:

grep { $lines[index] =~ /\b$lines[index]\b/s } 

,你可能想要這個:

while (my $input = <>) { 
    chomp($input); 
    last if $input =~ /^ \s* $/x; # exit loop if no input or only whitespaces 

    my @match = grep { /\b$input\b/s } @lines; 
    print @match; 
} 
3
while (<>) 

裝置

while (defined($_ = <>)) 

所以需要按下Ctrl-d(UNIX)或Ctrl-Z,Enter鍵(Windows)的信號輸入端。或者你可以添加一個檢查一個空行:

while (<>) { 
    chomp; 
    last if $_ eq ""; 
    print grep /\b$_\b/s, @lines; 
}