>>330
ご指摘ありがとうございます、そういうことだったんですか。ループ中の
[]の中に++を使うと確かに意味がわかっていませんでした。

>>331
アドバイスありがとうございます。
まず、以下のプログラムによって、改行+,を 改行にして「途中からずれる」という問題は解決できました。
open IN, "suuji.txt";
open OUT, ">suujikai.txt";
while (<IN>) {

s/,\n/\n/g ;

print OUT $_;
}
close IN;
close OUT;

>push関数は「@allの後ろにどんどん要素を追加していく」だけでクリアなんかしないわけだから
1行目の処理の時に詰め込んだものが2行目の処理の時に残っているのは当然。
>「次のループに影響する何か」をいちいち残している
この次のループに影響する何かというものを教えていただけませんか?
自分ではsuuji.txtの1行目の偶数を@guusuuに出力、その後2行目の偶数を@guusuuに出力しているつもりなのですが
どうしても1行目の偶数を出力、その後1行目と2行目の偶数を出力という風に2重に出力してしまいます・・・