我有两个数组,我们称之为@a1
和@a2
。我尝试做的是使用@a2
中的值作为索引从@a1
获取元素。我目前的尝试无法正常运作。
foreach (@a1) {
print $a2[$_] . "at" . $_;
}
这仅打印$_
,但不打印$a2[$_]
。
我觉得这有一个微不足道的解决方案,但我找不到它。
答案 0 :(得分:3)
您拥有的代码没有任何问题。我测试了一个小脚本,它按预期工作。 Asi我在评论中建议,尝试使用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
答案 1 :(得分:0)
只要第一个数组的值是第二个数组中的有效地址,您的代码就没有理由不起作用。但如果您真正想做的只是获取第二个数组的值和地址,您可以这样做:
for my $i (0..$#a2) {
print "$i: $a2[$i]","\n";
}
$#a2是数组的最后一个元素地址。