>331
やろうとしていることと関係あるかもしれないネタを1つ。
ファイルから1行ずつ読み出して処理しようとしているなら

while (<IN>) {
@elem = split(/\s+/);
}

よりも

while ($line = <IN>) {
@elem = split(/\s+/, $line);
}

の方が圧倒的に速いです。理由はよく知りません。