为什么我不能在Perl中执行“shift subroutine_name()”?

为什么我不能在Perl中执行“shift subroutine_name()”?,第1张

概述为什么此代码返回Not a ARRAY引用错误? sub Prog { my $var1 = 1; my $var2 = 2; ($var1, $var2);}my $variable = shift &Prog;print "$variable\n"; 如果我使用中间数组,我避免错误: my @intermediate_array = &Prog;my $var 为什么此代码返回Not a ARRAY引用错误?

sub Prog {    my $var1 = 1;    my $var2 = 2;    ($var1,$var2);}my $variable = shift &Prog;print "$variable\n";

如果我使用中间数组,我避免错误:

my @intermediate_array = &Prog;my $variable = shift @intermediate_array;print "$variable\n";

上面的代码现在输出“1”.

解决方法 子例程Prog返回标量列表. shift函数仅对数组进行 *** 作.数组和列表不是一回事.数组有存储空间,但列表没有存储空间.

如果你想要的是获得Prog返回的列表的第一个元素,请执行以下 *** 作:

sub Prog {    return ( 'this','that' );}my $var = (Prog())[0];print "$var\n";

我将子调用更改为Prog()而不是& Prog,因为后者显然是旧样式.

您还可以将第一个元素分配给标量,就像其他元素一样:

my ($var) = Prog();

这大致相同:

my ($var,$ignored_var) = Prog();

然后忽略$ignored_var.如果你想清楚地忽略第二个值而不实际给它一个变量,你可以这样做:

my ($var,undef) = Prog();
总结

以上是内存溢出为你收集整理的为什么我不能在Perl中执行“shift subroutine_name()”?全部内容,希望文章能够帮你解决为什么我不能在Perl中执行“shift subroutine_name()”?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1267970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存