1

コードの一部を次に示します。

foreach my $in (@_)
{
    my $x1 = sprintf("%.2f", $in->[0]);
    my $x2 = sprintf("%.2f", $in->[1]);
    my $x3 = sprintf("%.2f", $in->[2]);
    $count++;
    print "running: $x1 $x2 $x3\n";
    print PF "$x1 $x2 $x3\n";
}

$in 変数とは何ですか?配列ですか?ここで $in[0] の代わりに $in->[0] を使用するのはなぜですか? $inの長さを取得するには?

ありがとう!

4

4 に答える 4

4

$inは配列参照です (配列参照@_の配列もそうでした)。

scalar(@$in)(または@$inスカラーコンテキストで使用するだけで)要素の数を取得します(それが長さの意味であると仮定します)。

于 2013-03-01T07:15:14.490 に答える
3

Perl では、他の構造内に配列をネストすることはできません。配列への参照を使用する必要があります。これはスカラーであり (したがって を使用します$)、データを取得する必要が->あります。

これは、重要な Perl プログラミングに不可欠な大きなトピックであると言えば十分でしょう。perlreftutを読んでください。

于 2013-03-01T07:15:07.777 に答える
1

$inの参照を保持するスカラーARRAYです。

Data::Dumperの内容を使用して確認してください@_。それらが参照である場合、それらにアクセスするために を使用します->

あなたのコードでは、

  • $in->[0]の配列参照の最初の要素にアクセスしていることを意味します@_
  • $in->[1]の配列参照の 2 番目の要素にアクセスしていることを意味します@_
  • $in->[2]の配列参照の 3 番目の要素にアクセスしていることを意味します@_
于 2013-03-01T07:27:32.180 に答える
0

$inhere はarray への参照 (C ポインターに似ています)です。したがって、->この参照を逆参照して配列自体を取得するために使用されます。

于 2013-03-01T07:14:53.567 に答える