在没有赋值的情况下理解Perl中的这个正则表达式

时间:2014-06-23 19:51:27

标签: regex perl

有人可以解释我如何理解这部分代码 该代码从pfLogSumm.pl中提取,用于后缀邮件的日志分析器

while(<>) {
    next if(defined($dateStr) && ! /^$dateStr/o);
    s/: \[ID \d+ [^\]]+\] /: /o;    # lose "[ID nnnnnn some.thing]" stuff
    my $logRmdr;

    more code

}

我无法理解正则表达式的作用,因为没有作业,没有条件,简单就有

1 个答案:

答案 0 :(得分:1)

默认情况下,正则表达式(以及许多其他函数)在$_上运行。所以

s/: \[ID \d+ [^\]]+\] /: /o;

相当于:

$_ =~ s/: \[ID \d+ [^\]]+\] /: /o;

这会在输入行中仅用: [ID number ...]替换:

这是你应该在许多Perl脚本中看到的常见习语,你应该习惯它。