大佬教程收集整理的这篇文章主要介绍了perl – 局部变量保留值,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
sub foo { my $bar = shift or die "Missing bar",# <--- not a semicolon my @items = (); push @items,$bar; return @items; }
显然,错误是子程序的第一行以逗号结尾.这有一些相当不寻常的后果,可以看出:
say foo(1); # 1 say foo(1); # 11 say foo(1); # 111 say foo(1); # 1111
现在,我知道这不是语法错误,因为逗号运算符的工作原理.我知道@items没有被设置为()因为右边的或者没有到达.我的问题是,如何用我的子程序内部声明的变量允许数据在子程序调用之间持续存在?似乎我的某种程度变成了我们.
B::Deparse
在这样的练习中非常宝贵:
$perl -MO=Deparse 31191808.pl sub foo { die 'Missing bar',my(@items) = () unless my $bar = shift @_; push @items,$bar; return @items; }
这使得它成为my $var if 0
技巧/错误/好奇心的变种.它的作用是创建一个词法但静态的变量,每次调用foo时都不会重新初始化.
以上是大佬教程为你收集整理的perl – 局部变量保留值全部内容,希望文章能够帮你解决perl – 局部变量保留值所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。