在5.10之前的Perl中没有“状态”声明.
我遇到了一个在这些Perl中创建静态变量的例子:我的$x如果为0. if 0条件使变量像静态变量一样:
use strict; use warnings; add() for 1..7; sub add { my @arr = () if 0; push @arr,'+'; print @arr,"\n"; }
打印:
+ ++ +++ ++++ +++++ ++++++ +++++++
在5.10之前的所有版本的Perl中,这种行为是否一致?
解决方法
我一直使用范围大括号来创建静态变量.
add() for 1..2; # Append to existing. add('foo','bar'); # Re-initialize if args are passed. add() for 1..2; # Append to existing. { my @arr; sub add { @arr = @_ if @_; push @arr,'+'; print @arr,"\n"; } }