我试图找到一种方法,我可以返回散列的所有键的数组引用。
例如
sub example {
my %hash = (
'one' => [1,11,111],
'two' => [2,22,222],
'three' => [3,33,333]
.
.
'nine' => [9,99,999]
);
return sort keys %hash;
}
现在,如果我得到哈希的所有键,我将得到一个包含一个,两个...九的数组。我问我怎么能在这里返回数组引用?
我必须做这样的事吗?
my @array = sort keys %hash;
return \@array;
有更好的方法吗?像return \@{sort keys %hash}
?
如果那是不可能的,那么如何创建一个返回数组的子例程的引用?
在我的示例中,如果我按原始return sort keys %hash
进行操作,然后我想将此数组作为对其他子例程的引用传递,我该怎么办?
示例:
sub other_routine {
my $array_ref = shift;
## do something with $array_ref;
}
other_routine (\example());
如果我的问题不明确,请告诉我。提前谢谢。
P.S。 - 不幸的是,我必须在一个非常老的服务器上运行这个脚本,它有一个perl 5.8.3。
答案 0 :(得分:3)
匿名数组和哈希值也存在于5.8.3中。你甚至可以在代码中使用它们。
return [ keys %hash ]
如果一个子程序返回一个列表,你就不能通过添加一个\
使它成为一个引用:它将被分发,即你将获得一个对成员的引用数组。列表。但是,您仍然可以使用匿名数组:
my $ref = [ sub_that_returns_list() ];