sub get_lock { open(SEM, ">$semaphore_file") || die "Cannot create semaphore $semaphore_file: $!"; flock(SEM, LOCK_EX) || die "Lock failed: $!"; } sub release_lock { close(SEM); } sub readdata { my @filedata; @filedata=(); open(MFILE, ">>$completeadd") || die "file open2 failed at $completeadd: $!\n"; close(MFILE); open(MFILE, "$completeadd") || die "file open81 failed: $!\n"; @filedata=; chomp @filedata; close(MFILE); return(@filedata); } sub writedata { my @filedata; @filedata=(); @filedata=@_; open(MFILE, ">$completeadd") || die "file open3 failed: $!\n"; foreach(@filedata) { print MFILE "$_\n"; } close(MFILE); } $completeadd = "counter"; $semaphore_file = "counterLOCK"; get_lock(); if (-e $completeadd) { open(MFILE, "$completeadd") || die "file open4 failed: $!\n"; @filedata1=; chomp @filedata1; close(MFILE); } else { @filedata1=readdata(); } $hitcount=$filedata1[0]; if ($hitcount) { $hitcount=$hitcount + 1; } else { $hitcount = 1; } $filedata1[0]=$hitcount; writedata(@filedata1); release_lock(); close(CNTLCK);