プロが教える店舗&オフィスのセキュリティ対策術

WEB上のCGIで、
ファイル(file.dat)から配列@lineを読み込み、
@line=(01,02,03)
となっているときに、配列を操作して
@newline=(01,03)
とし、この @newline を

open(OUT,">file.dat");
print OUT @newline;
close(OUT);

と処理したところ、なぜか、その中身は 01 03 01 02 03
となってしまいます。つまり、新しいデータ以外に古いデータも書き込まれるのです。
いろいろ試しました。書き込みの前後で@newlineの中身を画面に表示するなどして
確かめましたが、そこには異常はありません。
また、いろいろ変えていくと、場合によっては、ファイルの中身は
01 03 00001 01 02 03
などという訳の分からないことになってしまいます。

追加書き込みの可能性はありません。
試しに @newline の中身を空にして書き込みしてみると、
この場合は ファイルの中身も空になっています。

つまり、 @newlineの中身が有るときは、
画面上には正しく表示されるのに、ファイルに書き込まれるときには、
古いデータ(場合によっては変なデータも)も一緒に出力されていると言うことです。

こういう現象の原因として何が考えられますでしょうか?
今まで、数々のファイル操作をしてきましたが、こういったことは
初めてです。

どうかご教授下さい。

A 回答 (1件)

管理者より:


同等の質問があるのでそちらをご参照下さい

参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=219929
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!