从数组引用数组中打印数组的值

时间:2014-06-17 14:41:40

标签: perl

如何打印数组的值。我尝试了几种方法,但我无法从数组中获取所需的值:

@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'");
 }

这样做的最佳方式是什么?

2 个答案:

答案 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实际上是一个伪装循环。

干杯。