Perl - 使用-P arg指定grep函数是什么?

时间:2013-08-09 22:23:23

标签: regex perl grep

我正在查看具有以下语法的代码:

@match = grep {/$sometext/-iP} @$myarray;

我知道-i找到一个忽略大小写的匹配。 “P”指定了什么?

1 个答案:

答案 0 :(得分:2)

该代码不正确。可能作者将Perl的内置grep函数与grep命令行工具混淆。

GNU grep中,-i选项使其不区分大小写,-P告诉它使用Perl样式的正则表达式。

在Perl中,这个:

@match = grep {/$sometext/-iP} @$myarray;

几乎肯定是不正确的(尽管TLP在评论中指出,可能被解释为-是减法而iP是函数调用)。

Perl正则表达式已经是Perl样式,因此P是不必要的。

可能的意思是:

@match = grep { /$sometext/i } @$myarray;

或更简单地说:

@match = grep /$sometext/i, @$myarray;

请注意,i限定符适用于模式匹配/$sometext/适用于grep
有关grep功能的详细信息,请参阅perldoc -f grep