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\")
    

要回复问题请先登录注册