3

私は次のPerlコードを持っています:

package CustomerCredit;
#!/usr/local/bin/perl
use 5.010;
use strict;

my $TransRef = @_; # This code comes from a sub within the package.
my ($Loop, $TransArrRef, $TransID);
for ($Loop = 0; $Loop < $$#TransRef; $Loop++)
{
   $TransArrRef = $$TransRef[$Loop]; # Gets a ref to an array.
   $TransID = $$TransArrRef[0];  # Try to get the first value in the array.
   # The above line generates a compile time syntax error.
   ...
}

$ TransRefは、配列への参照の配列への参照です。$TransRefが指す配列内の各要素を処理しようとしています。$ TransArrRefは、配列への参照を取得する必要があります。その配列内の最初の値を$TransIDに割り当てたいと思います。ただし、このステートメントはコンパイル構文エラーを生成します。

私は何か間違ったことをしているに違いありませんが、それが何であるかを理解することはできません。誰か助けてもらえますか?

4

3 に答える 3

4

構文エラーが発生して$$#TransRefいます$#$TransRef。あなたを置き違えることによって、#あなたは誤って残りの行をコメントアウトしました:

for ($Loop = 0; $Loop <= $$
{
   $TransArrRef = $$TransRef[$Loop];
   ...
}

$$プロセスIDがstrict与えられ、コンパイラがさらに失敗するので、問題ありません。

また、$#$TransRef配列の最後の要素を提供するので、 。<=だけでなく必要になります<。または、次のPerlスタイルのループを使用します。

for my $loop (0 .. $#$TransRef) {
    $TransID = $TransRef->[$loop]->[0];
    #   ...
}
于 2012-10-24T06:38:23.013 に答える
2
my $arrays_ref = [ [1,2], [3,4] ];

for my $array_ref (@$arrays_ref) {

    printf "%s\n", $array_ref->[0];
}
于 2012-10-24T06:42:13.713 に答える
0

あなたも使うことができますforeach

my @array = ('val1', 'val2', 'val3') ;
my $array_ref = \@array ;

print "array size is $#{$array_ref} \n" ;

foreach $elem (@$array_ref) {
   print "$elem \n"
}

出力:

array size is 2 
val1 
val2 
val3 
于 2014-03-05T15:42:36.093 に答える