※ ChatGPTを利用し、要約された質問です(原文:Perlでファイル書き込みの際の不思議)
Perlでファイル書き込みの際の不思議
このQ&Aのポイント
Perlでファイル書き込みを行った際、新しいデータと古いデータが書き込まれてしまう現象が発生しています。
試しに@newlineを空にして書き込んだ場合はファイルが空になるため、書き込み処理自体に問題はありません。
書き込みの前後で@newlineを画面表示しても問題なく表示されており、書き込まれたデータだけが異常な状態になっています。原因として考えられることを教えてください。
WEB上でPerlCGIを稼働し、ファイル(file.dat)からデータを読み込み、
@line=(0001,0002,0003) とします。
このときファイルの中身は
0001
0002
0003
という風に改行されています。
そして、@lineをいろいろ操作し、最終的に
@newline=(0001,0003) とし、 (実際には各要素には改行がついています)
これを
open(OUT,">file.dat")
print OUT @newline;
close (OUT);
と言う風に書き込み処理しました。
すると、ファイルの中身はなぜか
0001
0003
0001
0002
0003
もしくは
0001
0003
00001
0001
0002
0003
となってしまいます。(この違いはいろいろ試しているうちに発生しました)
もちろん上書きオープンです。
試しに @newline を空にして書き込むとファイルは空になりました。
どう試してみても、新しいデータと古いデータが書き込まれてしまうのです。
場合によっては心当たりの無いデータまで・・・
書き込みの前後で@newlineを画面表示してみましたが、
書き込みの前も後も問題なく表示されています。
つまり、書き込まれたデータだけが異常なのです。
今まで、データの更新→書き込み というのを
いろいろやってきましたが、このような現象は初めてです。
原因として考えられることを教えてください。
よろしくお願いします。