03/04/19 13:00 EJZQKwDz
URLリンク(homepage1.nifty.com)
に載ってる「ファイルを上書きする場合」(↓)
open(OUT, "+< $datafile"); # 読み書きモードで開く
flock(OUT, 2); # ロック確認。ロック
seek(OUT, 0, 0); # ファイルポインタを先頭にセット
print OUT "$data\n"; # 書き込む
truncate(OUT, tell(OUT)); # ファイルサイズを書き込んだサイズにする
close(OUT); # closeすれば自動でロック解除
を参考にして、
「(1)ファイルの中身(データ)を読み込んで、読み込んだデータを加工して、
(3)再度同じファイルにデータを格納する場合」を考えたんだけど、
↓で特に問題ないでしょうか?
$datafile = "data.txt";
open(OUT, "+< $datafile"); # 読み書きモードで開く
flock(OUT, 2); # ロック確認。ロック
@Array_data = <OUT>; # ★追加:(1)ファイルの中身を読み込んで
foreach $values (@Array_data){
#@Array_dataをいろいろ加工; # ★追加:(2)読み込んだデータを加工
chomp $values;
$values = $values * 2;
push (@New_Array_data,"$values\n");
}
seek(OUT, 0, 0); # ファイルポインタを先頭にセット
print OUT @New_Array_data; # ●変更:(3)再度同じファイルにデータを格納
truncate(OUT, tell(OUT)); # ファイルサイズを書き込んだサイズにする
close(OUT); # closeすれば自動でロック解除