Perl:根据用户输入从文件中获取行

Gar*_*ary 1 perl

可能重复:
如何在Perl中实现Unix grep?

无论如何我是否可以编写一个perl脚本来打印包含用户输入的字符串的文件中的所有行?

Uri*_*Uri 5

这个答案有两个独立的概念:

  1. 文件IO,并在一段时间内遍历所有行
  2. 正则表达式,尤其是将变量传递给正则表达式.

注意quotemeta的使用.当用户输入包含RE特定字符时,这很重要(如果您不处理它,甚至可能会创建一个illigel RE).

这是代码:

print "Looking for: ";
my $input = <>;
chomp $input;
my $re = quotemeta $input;

open my $fh, "<", "myfile.txt" or die $!;
while( <$fh> ) {
    print if /$re/;
}
close $fh;
Run Code Online (Sandbox Code Playgroud)