特定の操作を実行する Perl スクリプトがあり、その結果に基づいてファイルを更新する必要があります。
基本的な概要は次のとおりです。
- ファイルハンドル FILE から値を読み取ります
- 何らかの操作を実行し、その結果を INPUT ファイルに格納されている値と比較します。
- 変更がある場合は、File Handle に対応するファイルを更新します。
更新と言うとき、つまり、INPUTファイルの既存の値を新しい値で上書きします。
スクリプトの概要:
#! /usr/bin/perl
use warnings;
use diagnostics;
$input=$ARGV[0];
open(FILE,"+<",$input) || die("Couldn't open the file, $input with error: $!\n");
# perform some operation and set $new_value here.
while(<FILE>)
{
chomp $_;
$old_value=$_;
if($new_value!=$old_value)
{
print FILE $new_value,"\n";
}
}
close FILE;
ただし、これは $new_value をファイルに上書きする代わりに追加します。
私は FILE ハンドルのこのモードに関するドキュメントをいくつかの場所で読みました。
なぜ上書きできないのかわかりません。私が考えることができる1つの理由は、whileループでハンドルから読み取り、同時に上書きしようとしているため、機能しない可能性があることです。
ありがとう。