2016-11-25 9 views
0

誰にもこのアレイの最初のアイテムだけが印刷されている理由を説明できますか?なぜこのコードは最初の要素だけを出力しますか?

print "Hello World!\n"; 

    @array1 = ("john","haider","elley","uul"); 

    @array2 = qw/This is an array/; 

    $array_size=scalar @array1; 

    print "Size: ",$array_size,"\n"; 

    $i; 

    for($i=0; $i<=$array_size; $i=$i+1) 
    { 
      print"Array elements are=",$array1[i],"\n"; 
    } 
+11

これは、 'use strict'と' use warnings'がキャッチしたというエラーの素晴らしい例です。なぜあなたはそれらを使わなかったのですか? –

+0

お返事ありがとうございます!実際に私はPerlに新しいので、あなたはなぜそのすべての要素を印刷していないか教えてください。 –

+1

確かに、常に 'use strict;警告qw(all);を使用します。これはあなたのプログラムの5つ以上の問題を特定します! – ikegami

答えて

5

ここに入力したのは、$array1[i]です。

のように、$array1[$i]のようになります。これはuse strict;use warningsに警告するものです。 Bareword "i" not allowed while "strict subs" in use

しかし、それはそのままで、iを使用しているため、変数ではありません。ゼロと評価されるので、配列の最初の要素を印刷するだけです。

良好イディオムは次のようになります。Perlでのインデックスで配列を操作するためにまれに必要な(または望ましい)である

foreach my $value (@array1) { 
    print "Array elements are=", $value,"\n"; 
} 

+0

しかし、もし私が$ iを使うとすれば、私は0〜4の値を表示します。私が間違っていれば私を修正してください。 –

+0

ありがとう@Sobriqueあなたのforeachループが動作しています... :) –

関連する問題