#! /usr/bin/perl -Tw use GDBM_File; use Getopt::Std; my $def_gdbm = "sample.gdbm"; my $def_perm = 0640; my $def_mode = &GDBM_READER; my %def_opts = (); getopts('bcd:f:hi:lm:q:s:w', \%def_opts); my $arg_del = $def_opts{'d'}; # -d my $arg_put = $def_opts{'i'}; # -i my $arg_qry = $def_opts{'q'}; # -q my $arg_get = $def_opts{'s'}; # -s if ($def_opts{'h'}) { print "usage: $0 [ARGUMENTS]\n"; print "-b batch mode\n"; print "-c create named database if it does not exist\n"; print "-d entry delete entry from database\n"; print "-f file use file as database\n"; print "-h print this help message\n"; print "-i entry insert entry into database (needs -w)\n"; print "-l list the entire database\n"; print "-m key val match entries using key and val as regexps\n"; print "-q entry give a boolean reply whether entry exists\n"; print "-s entry show contents of entry\n"; print "-w open the database in write mode\n"; print "\n"; $PB{'h'} = undef; if (!$PB) { exit 0; } } if ($def_opts{'f'}) { $def_gdbm = $def_opts{'f'}; } if ($def_opts{'w'}) { $def_mode = &GDBM_WRITER; } if ($def_opts{'c'}) { $def_mode = &GDBM_WRCREAT; } tie(%PB, 'GDBM_File', $def_gdbm, $def_mode, $def_perm); if (!tied(%PB)) { die "$0: could not initialize database $def_gdbm\n"; } if ($arg_del) { if ($PB{$arg_del}) { undef($PB{$arg_del}); } else { print "key $arg_del does not exist!\n"; } } if ($arg_put) { if ($def_opts{'w'}) { print "Data for key $arg_put: "; my $val = ; $PB{$arg_put} = $val; } else { print "$0: use the -w switch to open the database in write mode\n"; } } if ($arg_qry) { if ($PB{$arg_qry}) { print "key <$arg_qry> exists\n"; } else { print "key <$arg_qry> does not exist\n"; } } if ($arg_get) { my $val = $PB{$arg_get}; print "Key: $arg_get\n"; print "Val: $val\n"; } if ($def_opts{'l'}) { while (($key, $val) = each(%PB)) { print "$key => $val", "\n"; } } untie(%PB); exit 0; __END__;