perl – 局部变量保留值
发布时间:2020-12-15 21:48:07 所属栏目:大数据 来源:网络整理
导读:所以,我只是追踪了一个可以在这个简单的子程序中演示的错误: sub foo { my $bar = shift or die "Missing bar",# --- not a semicolon my @items = (); push @items,$bar; return @items;} 显然,错误是子程序的第一行以逗号结尾.这有一些相当不寻常的后果,
所以,我只是追踪了一个可以在这个简单的子程序中演示的错误:
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; } 这使得它成为 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |