#!/usr/bin/perl -w use strict; use Fcntl qw(:DEFAULT :flock); use Time::HiRes 'usleep'; use Devel::Peek; open LOG, ">$$.log" or die $!; while ( 1 ) { open LOCK, "lock.file" or die "lock file $!"; die "$$ failed to get lock" unless flock(LOCK,LOCK_EX); # perlfaq example sysopen(FH, "numfile", O_RDWR|O_CREAT) or die "can't open numfile: $!"; my $num = || 0; chomp $num; seek(FH, 0, 0) or die "can't rewind numfile: $!"; truncate(FH, 0) or die "can't truncate numfile: $!"; $num++; (print FH $num, "\n") or die "can't write numfile: $!"; close FH or die "can't close numfile: $!"; print LOG "$num\t$$\n"; close LOCK; usleep( 100 ); last if $num >= 100000; }