繁体   English   中英

将数组的名称存储为另一个数组的元素时,如何访问Perl中的数组元素?

[英]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]-> \\ @et(对@et的引用)
  • $ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM