sub counter { my ($file) = @_; local *COUNTER; local $/ = undef; open COUNTER, '+<', $file or open COUNTER, '>', $file or return undef; flock COUNTER, 2; seek COUNTER, 0, 0; my $counter = ; seek COUNTER, 0, 0; truncate COUNTER, 0; print COUNTER ++$counter; close COUNTER; return $counter; }