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)
,因为这些可能是他感兴趣的关键字段。而不是数组中的每个元素