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