[英]How do you access an array element in Perl when you have the name of the array stored as an element of another array?
假设我有这段代码。
它有一个数组'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]和许多其他变体,但似乎没有任何效果。 有什么办法吗?
这样工作是一个坏主意。 您可能想要的不是存储其他数组的名称,而是对其的引用,例如
my @et = ( 100,1000,1100,1200,... );
my @arr = ( \@et,... )
那么您可以使用@arr和$ arr [0] [1]从@et访问第二个元素:
通常您会看到人们写$ arr [0]-> [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";
不过,这不是很好的样式。 您最好将“数组名”索引的哈希与数组(或数组引用)作为与键关联的值一起使用:
my %arr = ( "et" => [100, 1000, 1100], "rt" => [200, 2000, 2200] );
print $arr{et}->[2], "\n";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.