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

FMc*_*FMc 2 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
Run Code Online (Sandbox Code Playgroud)

yst*_*sth 19

是的,/^/不同于/^/m,但因为/^/split它一起使用时无用,它(用于split)自动变为/^/m.这在perldoc -f split中有记录.

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