Perlについての質問箱 33箱目
■ このスレッドは過去ログ倉庫に格納されています
0331デフォルトの名無しさん
2007/11/09(金) 11:04:37> 0,2,4,6,8,10,12,14,16,18,20,0,2,4,6,8,10,12,14,16,18,20,21,23,25,27,29,
> となってしまい
いや、なってないから(*1)。
突っ込むところは複数あるんで、書くのが面倒だな・・・。とりあえず、
(1) suuji.txtの1行目の終わりに","が付いていて、且つ、末尾の改行を除去していないので、
@allに最初に入るのは、1から20までと「空白+改行」の、全21要素である。
(2) だから2行目に入ると、奇数偶数が入れ替わる。
*1 というか、$add[n]の中身がn + 1なので(ややこしい)、君の言うようには出力されない。
(3) push関数は「@allの後ろにどんどん要素を追加していく」だけでクリアなんかしないわけだから、
1行目の処理の時に詰め込んだものが2行目の処理の時に残っているのは当然。
前のカウンター変数の時もそうだけど、君自身は毎回のループ処理を独立させて捉えているのに、
君の書くコードは「次のループに影響する何か」をいちいち残していってる。それが混乱を生んでる。
(4) @all[$i]という書き方は「配列スライス」といって、この場合たまたまスカラーを取り出してるような
結果になってるだけ。$all[$i]と書くべき。「スライス」をキーワードにして調べるように。
あたりは絶対に直さないとダメ。他にも「よりよい方法に変えるべき」点はあるけど、書ききれない。
■ このスレッドは過去ログ倉庫に格納されています