1

テキスト ファイルまたは Perl スクリプトによる他の方法でシーケンスを保存する最良の方法は何ですか。スクリプトを初めて実行するときはシーケンスを 1 に、2 回目は 2 にします。また、複数の Perl プロセスがファイルにアクセスするときの競合にも注意する必要があります。

my $seqfile = "f";
my $fh = FileHandle->new($seqfile, O_RDONLY | O_CREAT);
flock($fh, LOCK_EX);
my $seq = $fh->getline;
$seq = 0 unless($seq);
$seq = $seq + 1;
flock($fh, LOCK_UN);

$seqファイルのロックを失うことなく書き戻す方法は?

4

1 に答える 1

1

このような:

my $seqfile = "f";
my $fh = FileHandle->new($seqfile, O_RDWR | O_CREAT);
flock($fh, LOCK_EX) or die; # alternatively do loop retrying...
my $seq = $fh->getline;
$seq = 0 unless($seq);
$seq = $seq + 1;
seek ($fh, 0, SEEK_SET);
print $fh $seq;
close ($fh);

close($fh) は、バッファリングされたデータをファイルにフラッシュし、ロックを解放することに注意してください。

于 2013-08-01T18:54:59.180 に答える