#!/usr/bin/perl -w # $Id: db_remove,v 1.2 2001/12/06 15:46:52 mradwin Exp $ BEGIN { @AnyDBM_File::ISA = qw(DB_File NDBM_File GDBM_File SDBM_File) } use strict; use Fcntl qw(:DEFAULT :flock); use AnyDBM_File (); my $file = shift; die "usage: $0 file.db key [key2 .. keyN]\n" unless @ARGV; my(%DB); my($db) = tie(%DB, 'AnyDBM_File', $file, O_RDWR|O_CREAT, 0644); defined($db) || die "Can't tie $file: $!\n"; my($fd) = $db->fd; open(DB_FH, "+<&=$fd") || die "dup $!"; unless (flock (DB_FH, LOCK_EX)) { die "flock: $!" } foreach my $key (@ARGV) { delete $DB{$key} if defined $DB{$key}; } flock(DB_FH, LOCK_UN); undef $db; undef $fd; untie(%DB); close(DB_FH); exit(0);