有没有办法在Perl中获取哈希中的数组名称?

时间:2011-12-27 13:51:24

标签: arrays perl

我在Perl程序中使用了几个相同结构的数组,在某些时候,我需要输出名称。即,我需要从'array_name'获得@array_name 我该怎么做?如果这是不可能的,你能否建议任何方便的“相对”存储数组及其名称的方法? 谢谢。

3 个答案:

答案 0 :(得分:5)

当然可以,但我建议将数组作为匿名数组引用存储在哈希中:

my %arrays = (
    'array_name' => [ qw(contents of array array_name) ],
    # etc
)

然后,检索名为$some_array_name的数组:

my @array = @{$arrays{"$some_array_name"}};

答案 1 :(得分:2)

您可以按如下方式创建匿名数组的哈希:

%HoA = (
    flintstones    => [ "fred", "barney" ],
    jetsons        => [ "george", "jane", "elroy" ],
    simpsons       => [ "homer", "marge", "bart" ],
);

您可以按如下方式设置特定数组的第一个元素:

$HoA{flintstones}[0] = "Fred";

要将第二个Simpson大写,请将替换应用于相应的数组元素:

$HoA{simpsons}[1] =~ s/(\w)/\u$1/;

您可以通过循环哈希的键来打印所有系列:

for $family ( keys %HoA ) {
    print "$family: @{ $HoA{$family} }\n";
}

答案 2 :(得分:0)

没有自动名称存储。它只是您使用的变量的名称。如果你需要存储它,我建议使用像这样的哈希:

$array->{name} = "array_name";
$array->{data} = [@array_name];