将二维数组传递给子例程perl

时间:2016-12-05 17:24:30

标签: perl multidimensional-array subroutine

我有这个数组:

print ("Grade\n");
        for (my $j=0; $j < $size; $j++){
            for (my $i=0; $i < $sizeCol; $i++){
                print("$newMatrizGrades[$j][$i] ");
            }
            print ("\n");
        }

newSubject ($name,@newArrayNames,@newMatrizGrades);
}

在印刷品上,我可以看到元素。但是当我在常规中时。以这种方式访问​​数组$ [$ sizeNewArrayName],我得到一个地址而不是值。 @newArrayNames是一维数组,我可以访问元素$ [1],$ [2],...,$ [$ sizeNewArrayName],没有进一步的问题。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:1)

Perl将子例程参数混合到一个长列表中(因此无法识别单独的列表/数组变量),因此在这种情况下,您需要发送对数组的引用,然后在子数据库中取消引用它们当你去使用它们时:

use warnings;
use strict;

newSubject($name, \@newArrayNames, \@newMatrizGrades);

sub newSubject {
    my ($name, $names, $grades) = @_;

    for (@$names){
        # do something
    }

    print "$grades->[0][0]\n";
}