2009-10-09 138 views
2

perlre/m选项的文档这样说:在Perl中,/^/和/ ^/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

当你认为你发现了一些奇怪的东西时,尝试使用完全不同的技术来复制它。这会告诉你,这是魔术的分裂,而不是/米。 :) – 2009-10-09 19:34:24

回答

19

是,/^//^/m不同,但因为split使用时/^/将是无用的,它(split)自动成为/^/m。这在perldoc -f split中有记录。

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

相关问题