Arrays 使用数组索引到另一个数组

Arrays 使用数组索引到另一个数组,arrays,perl,Arrays,Perl,我有两个数组,我们称它们为@a1和@a2。我试图做的是使用@a1中的值作为索引,从@a2中获取元素。我当前的尝试无法正常工作 foreach (@a1) { print $a2[$_] . "at" . $_; } 这只打印$\u,而不打印$a2[$\u] 我觉得有一个简单的解决方案,但我就是找不到。您的代码没有问题。我已经测试了一个小脚本,它可以正常工作。正如我在评论中建议的那样,尝试使用类似于Data::Dumper的方法来查看循环之前数组中的内容 use strict; use

我有两个数组,我们称它们为
@a1
@a2
。我试图做的是使用
@a1
中的值作为索引,从
@a2
中获取元素。我当前的尝试无法正常工作

foreach (@a1) {
    print $a2[$_] . "at" . $_;
}
这只打印
$\u
,而不打印
$a2[$\u]


我觉得有一个简单的解决方案,但我就是找不到。

您的代码没有问题。我已经测试了一个小脚本,它可以正常工作。正如我在评论中建议的那样,尝试使用类似于
Data::Dumper
的方法来查看循环之前数组中的内容

use strict;
use warnings;
use Data::Dumper;

my @a1 = (0..4);
my @a2 = ("a".."e");

print Dumper \@a1, \@a2;

foreach (@a1){
 print $a2[$_]." at ".$_."\n";
}
输出

$VAR1 = [
          0,
          1,
          2,
          3,
          4
        ];
$VAR2 = [
          'a',
          'b',
          'c',
          'd',
          'e'
        ];
a at 0
b at 1
c at 2
d at 3
e at 4

只要第一个数组的值是第二个数组中的有效地址,代码就没有理由不工作。但是,如果您真正想做的只是获取第二个数组的值和地址,那么您可以执行以下操作:

for my $i (0..$#a2) {
    print "$i: $a2[$i]","\n";
}

$#a2是数组的最后一个元素地址。

它在这里工作正常:
perl-E'@a1=(0,1,2)@a2=qw(a b c);对于(@a1){say$a2[$\u]}'
给出了
a
b
c
。有趣。那么问题一定出在别处了。谢谢。使用类似于
Data::Dumper
的方法检查(@a2[@a1]){say}的foreach循环
之前a1和a2中的内容。谢谢,我不知道数据转储程序存在。这真的很有帮助。它便于查看变量中的内容。请记住,当查看数组或散列时,它希望引用数组或散列,而不是实际的数组或散列本身。所以你需要用反斜杠传递它。OP并没有说他的数组是否适用于所有元素。他的数组可以是
my@a1=(4,6,8)
,因为这些可能是他感兴趣的关键字段。而不是数组中的每个元素