【发布时间】:2011-01-27 21:16:08
【问题描述】:
我在 perl 的闭包和 $1 regexp 变量中发现了一个可能的错误。简单地说,它们不会混合在一起。
让我们来看看这段代码。
use warnings;
while ("1234567890"=~/(.)/sg) {
push @subs, sub{print $1;};
}
for (@subs) {$_->()}
您会想象 perl 现在会打印所有数字 - 相反,我收到了来自 undefined $1 的 10 条警告。
这真的是一个错误,还是我只是错过了 perl 文档中的某些内容?有什么原因吗,为什么$1 应该是未定义的,而不是闭包的一部分?
【问题讨论】:
标签: perl