sub filelock; filelock "lockit"; Do the inplace edit stuff here filelock "unlock"; sub filelock { if ( @_ eq "lockit" ) { open(LCK,">abc.lock") or die "Can't open abc.lock: $! \n"; unless (flock LCK, LOCK_EX) { warn "Waiting to obtain lock on LCK ....\n"; flock(LCK, LOCK_EX) or die "Cannot lock semaphore file - $!\n"; } } if ( @_ eq "unlock" ) { close(LCK) } }