【问题标题】:print first row of a 2d Array in Perl在 Perl 中打印二维数组的第一行
【发布时间】:2011-10-31 11:12:03
【问题描述】:

我有下面的代码,我试图只打印出这个二维数组的第一行

# how many columns
for (my $c = 0; $c <= $#list[0]; $c++) {
print $list[0][$c]."\n";

数据应该类似于

[0] => "ID,Cluster,Version"
[1] => "2,32,v44"

错误:

syntax error at ./connect_qb.pl line 107, near "$#list["
syntax error at ./connect_qb.pl line 107, near "++) "
Execution of ./connect_qb.pl aborted due to compilation errors.

【问题讨论】:

    标签: arrays perl multidimensional-array 2d


    【解决方案1】:
    $list[0]
    

    是对数组的引用,所以数组是

    @{ $list[0] }
    

    所以该数组的最后一个元素是

    $#{ $list[0] }
    

    所以你会使用

    for my $c (0 .. $#{ $list[0] }) {
       print "$list[0][$c]\n";
    }
    

    for (@{ $list[0] }) {
       print "$_\n";
    }
    

    【讨论】:

      【解决方案2】:

      你应该避免 c 风格的 for 循环。这是一种方法。

      use strict;
      use warnings;
      use feature qw(say);
      
      my @a = (["ID","Cluster","Version"], ["2","32","v44"]);
      say for (@{$a[0]});
      

      稍微不那么令人困惑的解引用:

      ...
      my $ref = $a[0];
      say for (@$ref);
      

      【讨论】:

        【解决方案3】:

        这是一个简单的衬里

        print join(",",@{$list[0]}),"\n";
        

        【讨论】:

          【解决方案4】:

          试试这个:

          for (my $c = 0; $c <=  (scalar @{$list[0]}); $c++) 
          

          循环条件

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-03-02
            • 1970-01-01
            • 2012-02-22
            • 2016-07-11
            • 2020-02-25
            • 2014-03-25
            相关资源
            最近更新 更多