質問: 10 - $total1; } #ここまでをコメントアウトすると正常動作する print "$data[0]:$data[1]:$data[2]:$data[3]:$data[4]:$data[5]:$data[6]\n"; $i++; } ``` ### 補足情報(言語/FW/ツール等のバージョンなど) 足りない情報などがあれば用意しますので、ご指摘くださいませ。
回答: まず、これがおかしいです。 ``` @no_data = split //, $data[$i+1]; ``` $data[$i+1]には、ループ回数に応じて、"0" とか"1"とかの単値が入ります。これをsplitしても無意味です。 そして、$i==6のとき、$data[7]は未定義なので、その後の計算はすべて意味をなしません。かくして$total1==0が成立し、if文の条件に従って0が出力されます。 こういうのを突き止めるにはデバッガを使います。 ``` $ perl -d test.pl ``` このように実行すると、すぐに処理が始まらず、デバッグモードに入ってユーザーの入力待ちになります。 ここで、 n と打つと、スクリプトが一行だけ実行されます。 p $i などとうつと、$iの値が出力されます。pのあとにはあらゆるperlの式を指定できます。 5行目まで進んで、たとえば p $no_data[2] とやれば期待に外れた何かが起こっていることに容易に気づくことができるでしょう。