如何打印数组的值。我尝试了几种方法,但我无法从数组中获取所需的值:
@array; 翻斗车输出如下:
$VAR1 = [
'a',
'b',
'c'
];
$VAR1 = [
'd',
'e',
'f'
];
$VAR1 = [
'g',
'h',
'i'
];
$VAR1 = [
'j',
'k',
'l'
];
for my $value (@array) {
my $ip = $value->[0];
DEBUG("DEBUG '$ip\n'");
}
我得到如下输出,这意味着foreach
实例我只得到第一个值。
a
d
g
j
我尝试了几种方法:
第一个选项:
my $size = @array;
for ($n=0; $n < $size; $n++) {
my $value=$array[$n];
DEBUG( "DEBUG: Element is as $value" );
}
第二个选项:
for my $value (@array) {
my $ip = $value->[$_];
DEBUG("DEBUG Element is '$ip\n'");
}
这样做的最佳方式是什么?
答案 0 :(得分:2)
很明显你有数组列表。您只能遍历顶部列表并在第一个示例中打印第一个(第0个)值。除非有任何自动翻斗车,否则你需要在两个级别上循环。
for my $value (@array) {
for my $ip (@$value) {
DEBUG("DEBUG '$ip\n'");
}
}
答案 1 :(得分:1)
你想dereference在这里,所以你需要做类似的事情:
my @array_of_arrays = ([qw/a b c/], [qw/d e f/ ], [qw/i j k/])
for my $anon_array (@array_of_arrays) { say for @{$anon_array} }
或使用您的变量名称:
use strict;
use warnings;
my @array = ([qw/a b c/], [qw/d e f/], [qw/i j k/]);
for my $ip (@array) {
print join "", @{$ip} , "\n"; # or "say"
}
由于涉及匿名数组,我专注于解除引用(使用PPB样式!)而不是嵌套循环,但print for
实际上是一个伪装循环。
干杯。