在Perl中,/ ^ /和/ ^ / m之间有区别吗?

时间:2009-10-09 18:00:15

标签: regex perl

perlre/m选项的文档说明了这一点:

  

将字符串视为多行。那   是,从匹配中更改“^”和“$”   字符串的开头或结尾   匹配任何行的开头或结尾   字符串中的任何地方。

但是这个例子似乎表明/^//^/m的行为方式相同。我误解了什么?

use strict;
no warnings; # Ignore warning about implicit split to @_
my $x = " \n \n ";
print scalar(split /^/m, $x), scalar(split /$/m, $x), "\n";  # 33
print scalar(split /^/,  $x), scalar(split /$/,  $x), "\n";  # 31

1 个答案:

答案 0 :(得分:19)

是的,/^//^/m不同,但由于/^/split一起使用时无用,所以(仅适用于split )自动变为/^/m。这在perldoc -f split中有记录。

这是一种令人惊讶的DWIM,如果我们不得不重新做这件事,可能不会包含在perl中。