5.8里的行为就不理了,我学Perl学得晚,一开始接触的就是5.10

On 7月26日, 下午12时08分, Lee Duhem <[email protected]> wrote:
> 2009/7/26 Cheese <[email protected]>:
>
>
>
> > 也即是$1的生存时间只在一个code block里,也即是$1不能从一个循环存活到下一个循环,到下一个循环就会重设为undef
>
> > foreach my  $addr (@addrs)
> > {
> >        $txt3 =~ /$addr\/0\s+(.*)/;
> >        print $1,"\n";
>
> > }
> > 如果执行上面这段,那进入循环的第二次后,$1就会重设为undef. 所以在第二次循环就会出现这样的警告:
> > Use of uninitialized value $1 in print at reg.pl line 21.
>
> > $txt3=~/$addrs[0]\/0\s+(.*)/;
> > print $1,"\n";
> > $txt3=~/$addrs[1]\/0\s+(.*)/;
> > print $1,"\n";
> > 如果执行上面四行代码,那就会输入两次$1,即使第二次匹配失败。
>
> > 我不确定在5.8中的行为,
>
> perl 5.8.8 的行为就是在上面的 foreach 循环中,$1 会被输出两次,和后面循环展开后的结果一致。
>
> lee
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
 要在此论坛发帖,请发电子邮件到 [email protected]
 要退订此论坛,请发邮件至 [email protected]
 更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

回复