假设我有这段代码。
它有一个数组'arr'存储其他数组的名称,如'et','rt'等......
#!/usr/bin/perl
$\="\n";
@arr = ("$et", "\$rt", "\$ee", "\$re", "\$ec", "\$epc", "\$rc", "\$rpc", "\$euc", "\$ruc", "\$ekc", "\$rkc");
@et = (100, 1000, 1100, 1200, 200, 300, 400, 500, 600, 700, 800, 900);
.
.
.
和其他数组rt,ee类似定义..
如何访问说$ et [2]?我已经尝试了$ arr [0] [2],$($ arr [0])[2]以及许多其他变体,但似乎没有任何效果。任何解决方案?
答案 0 :(得分:2)
以这种方式工作是个坏主意。你可能想要的不是存储其他数组的名称,而是存储它的名称,例如
my @et = ( 100,1000,1100,1200,... );
my @arr = ( \@et,... )
然后你可以使用$ arr [0] [1]从@et访问第二个元素:
经常你会看到人们写$ arr [0] - > [1],这完全相同,只有2个字节:)
答案 1 :(得分:2)
您不使用use strict;
(或至少不使用use strict refs;
)。
您需要${$arr[0]}[2]
,但是您可以在"et"
中存储简单名称(@arr
):
@arr = ("et", "rt",);
@et = (100, 1000, 1100, 1200, 200, 300, 400, 500, 600, 700, 800, 900);
print ${$arr[0]}[2], "\n";
但是,这不是好的风格。你最好使用由'array name'索引的哈希,并将数组(或数组引用)作为与键关联的值:
my %arr = ( "et" => [100, 1000, 1100], "rt" => [200, 2000, 2200] );
print $arr{et}->[2], "\n";