Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 从散列键或返回子例程返回数组引用_Arrays_Perl_Hash - Fatal编程技术网

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() ];

令人惊叹的!这正是我想要的。你救了我一天。谢谢