2016-12-05 3 views
0

に2次元配列を渡す私はこの配列を有します。しかし、私がルーチンの中にいるとき。この方法で$ [$ sizeNewArrayName]の配列にアクセスすると、値の代わりにアドレスが得られます。 @newArrayNamesは1次元の配列で、問題なく、$ [1]、$ [2]、...、$ [$ sizeNewArrayName]の要素にアクセスできます。誰かが私を助けることができますか?サブルーチンのPerl

+1

は、このリンクを参照してください... http://stackoverflow.com/questions/5680147/passing-two-or-more-arrays-to-a-perl-subroutineはあなたを助けるべきです...配列を逆参照する必要があります –

+1

配列をサブ配列に渡すことはできません。あなたが持っているものは 'newSubject($ name、$ newArayNames [0]、$ newArayNames [1]、...、$ newMatrizGrades [0]、$ newMatrizGrades [1]、...)'と同じです。代わりに。 – ikegami

答えて

1

Perlはサブルーチン引数を1つの長いリストにマッシュします(したがって、別のリスト/配列変数を識別することはできません)。この場合、配列への参照を送信してから、あなたはそれらを使用するために行く:

use warnings; 
use strict; 

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

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

    for (@$names){ 
     # do something 
    } 

    print "$grades->[0][0]\n"; 
} 
関連する問題