如何解决Perl编程和返回值
| 如何在perl中返回局部变量数组(或与此有关的任何变量)的值。例如。我必须返回对数组的引用。看来它也不行。sub routine
{
my @array = (\"foo\",\"bar\");
return @array;
}
但这似乎不起作用。如何从Perl中的局部变量返回值?
我的第二个相关问题是,如何将嵌套数组作为数组访问。前面的问题也产生了对此解决方案的需求。
@nestedArray = (\"hello\",\"there\");
@array = (\"the\",\\@nestedArray);
($variable1,$variable2) = values @array;
这就是我尝试过的
($variable3,$variable4) values $$variable2; ## This doesn\'t seem to work?
:-/
解决方法
关于第二个问题,您应该阅读perlreftut,以使您理解参考文献。
同样,虽然
keys
和values
在技术上可以在数组上工作,但并不是真正要在数组上使用它们。这是一条红鲱鱼。
,sub routine {
my @array = ( \"foo\",\"bar\" );
return @array;
}
print join \"\\n\",routine();
以上确实返回了一个列表。
@nested_array = ( \"hello\",\"there\" );
@array = ( \"the\",\\@nested_array );
print join \"\\n\",( $array[0],@{ $array[1] } );
这里,,7ѭ的第一个元素是the
,第二个元素是数组引用。因此,您必须取消引用第二个元素作为数组。
但是,为简便起见,您可以将第二个数组展平为一个列表:
@array = ( \"the\",@nested_array );
print join \"\\n\",@array;
,对于第二个,这有效:
($variable3,$variable4) = @$variable2;
您的第一个示例似乎可以正常运行。
,通常,您通常返回对非标量变量或标量值的引用。
return $var
or
return \\@var
or
return \\%var
然后将它们取消引用为%$ var或@ $ var或使用箭头符号
$ var-> [0]或$ var-> {hash_key}
,首先,您做对了。但是我认为您在标量上下文中调用了该函数,因此您只获得了列表/数组中元素的数量。
sub routine
{
my @array = (\"foo\",\"bar\");
return @array;
}
my $a = routine(); # a will be **2** instead of an array (\"foo\",\"bar\")
my @a = routine(); # a will be an array (\"foo\",\"bar\")
如果确实需要返回一个数组,并且要确保正确调用了该子项。您可以使用wantarray()
功能。
sub routine
{
my @array = (\"foo\",\"bar\");
return @array if wantarray;
die \"Wrong invoking context\";
}
第二,可以使用push;
@nestedArray = (\"hello\",\"there\");
@narray = (\"the\",\"world\");
push @narray,@nestedArray; # @narray is (\"the\",\"world\",\"hello\",\"there\")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。