简单的perl正则表达似乎不起作用

时间:2015-06-23 17:29:41

标签: regex perl

Perl newb在这里。我不明白为什么下面的代码不起作用:

use strict;

my $file = shift;
open(FRED,'<',$file);
while (my $line = <FRED>) {
    if ($line ~= /(fred)/i) {
    print("$line mentions fred.\n");
    }
}

我一直收到以下错误:

syntax error at ./regex2.pl line 11, near "$line ~"

syntax error at ./regex2.pl line 14, near "}"

由于编译错误,./regex.pl的执行中止。

3 个答案:

答案 0 :(得分:8)

匹配运算符(=~)的右侧是波浪号,而不是左侧:

if ($line ~= /(fred)/i) {

应该是:

if ($line =~ /(fred)/i) {

答案 1 :(得分:2)

正则表达式的语法为=~而非~=,请尝试

if($line =~ /fred/i) {
    print "$line mentions fred.\n";
}

答案 2 :(得分:0)

问题在于:

操作符=〜而不是〜=