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
答案 0 :(得分:19)
是的,/^/
与/^/m
不同,但由于/^/
与split
一起使用时无用,所以(仅适用于split
)自动变为/^/m
。这在perldoc -f split中有记录。
这是一种令人惊讶的DWIM,如果我们不得不重新做这件事,可能不会包含在perl中。