Arrays 从散列键或返回子例程返回数组引用
我正在试图找到一种方法,可以返回散列中所有键的数组引用 比如说Arrays 从散列键或返回子例程返回数组引用,arrays,perl,hash,Arrays,Perl,Hash,我正在试图找到一种方法,可以返回散列中所有键的数组引用 比如说 sub example { my %hash = ( 'one' => [1,11,111], 'two' => [2,22,222], 'three' => [3,33,333] . . 'nine' => [9,99,999] ); return sort keys %hash; }
sub example {
my %hash = (
'one' => [1,11,111],
'two' => [2,22,222],
'three' => [3,33,333]
.
.
'nine' => [9,99,999]
);
return sort keys %hash;
}
现在,如果我得到散列的所有键,我将得到一个包含1,2..的数组。。九。我在问如何在这里返回数组引用
我必须这样做吗
my @array = sort keys %hash;
return \@array;
有更好的方法吗?类似于返回\@{排序键%hash}
如果这是不可能的,那么我如何创建返回我数组的子程序的引用
在我的示例中,如果我按原始的返回排序键%hash
,然后我想将此数组作为引用传递给其他子例程,我该如何做
例如:
sub other_routine {
my $array_ref = shift;
## do something with $array_ref;
}
other_routine (\example());
如果我的问题不清楚,请告诉我。提前谢谢
不幸的是,我必须在一台非常旧的服务器上运行这个脚本,该服务器上有perl 5.8.3。匿名数组和哈希也存在于5.8.3中。你甚至可以在代码中使用它们
return [ keys %hash ]
如果一个子例程返回一个列表,您不能通过添加\
将其变成引用:它将被分发,即您将获得一个列表成员的引用数组。您仍然可以使用匿名数组,但:
my $ref = [ sub_that_returns_list() ];
令人惊叹的!这正是我想要的。你救了我一天。谢谢