my $db = tie %HoA, 'DB_File', $path, O_RDWR | O_CREAT, 0666, $DB_HASH or die "[Error processing $path ] $!"; my $fd = $db->fd; open DBM, "+<&=$fd" or die "Could not dup DBM for lock: $!"; # now try to lock it my $success; my $tries = 0; while ($tries++ < 10) { last if $success = flock (DBM, LOCK_EX|LOCK_NB); print p("Waiting for $lock_type lock on AddressBook file..."); sleep(1); # wait a second } undef $db;