2013-07-31 33 views
1

什麼是存儲在一個文本文件或者Perl腳本一些其他的方式序列的最佳方式序列。當我第一次運行該腳本時,我希望序列爲1並且是第二次2.當多個Perl進程訪問文件時,我還應該注意爭用。方式存儲在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

+0

「序列」通常比一個數長。 – choroba

+1

基本上要鎖定一個文件(羣),打開它(開放),從它讀了許多,增加的數量,把它寫回文件,將其關閉並解除鎖定。 – marderh

+0

@marderh謝謝你,我的想法。 – Vjy

回答

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); 

注意關閉(FH $)將採取沖洗緩衝的數據文件,以及釋放鎖的照顧。