#!/usr/bin/perl use warnings; use strict; use Fcntl qw':flock :seek'; our $COUNT_FILE = 'mycounter'; my $cfh; -e $COUNT_FILE ? open $cfh, "+< $COUNT_FILE" : open $cfh, "+> $COUNT_FILE" # not needed if file always exists or die "Can't open $COUNT_FILE: $!\n"; flock($cfh, LOCK_EX) or die "Can't lock: $!\n"; chomp(my $count = <$cfh> || ''); seek($cfh, 0, SEEK_SET); print $cfh ++$count, "\n"; print "Run #$count\n"; # truncate not needed as $count is always increasing close($cfh); # automagically releases the lock