回答編集履歴
1
誤字修正。デバッガの使い方追記
test
CHANGED
@@ -12,4 +12,36 @@
|
|
12
12
|
|
13
13
|
$data[$i+1]には、ループ回数に応じて、"0" とか"1"とかの単値が入ります。これをsplitしても無意味です。
|
14
14
|
|
15
|
-
そして、$i==6のとき、$
|
15
|
+
そして、$i==6のとき、$data[7]は未定義なので、その後の計算はすべて意味をなしません。かくして$total1==0が成立し、if文の条件に従って0が出力されます。
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
こういうのを突き止めるにはデバッガを使います。
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
$ perl -d test.pl
|
24
|
+
|
25
|
+
```
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
このように実行すると、すぐに処理が始まらず、デバッグモードに入ってユーザーの入力待ちになります。
|
30
|
+
|
31
|
+
ここで、
|
32
|
+
|
33
|
+
n
|
34
|
+
|
35
|
+
と打つと、スクリプトが一行だけ実行されます。
|
36
|
+
|
37
|
+
p $i
|
38
|
+
|
39
|
+
などとうつと、$iの値が出力されます。pのあとにはあらゆるperlの式を指定できます。
|
40
|
+
|
41
|
+
5行目まで進んで、たとえば
|
42
|
+
|
43
|
+
p $no_data[2]
|
44
|
+
|
45
|
+
とやれば期待に外れた何かが起こっていることに容易に気づくことができるでしょう。
|
46
|
+
|
47
|
+
|