http://paperlined.org/src/pl/jollies/backend/dbm/listkeys.pl
#!/usr/bin/perl
# list all (or a subset) of keys in a dbm
use strict;
use warnings;
use BerkeleyDB;
use Storable;
use File::Temp qw/ tempfile tempdir /;
use Safe;
use Data::Dumper;
@ARGV >= 1
or die "Syntax: $0 <db_file> [prefix]\n";
my $filename = shift;
my $prefix = shift;
#-e $filename or die "Please specify a valid db file.\n";
my $env = new BerkeleyDB::Env;
my %hash;
my $db = tie %hash, 'BerkeleyDB::Btree',
-Filename => $filename,
-Flags => DB_CREATE
or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
if (!defined($prefix)) {
while (my ($key) = each %hash) {
print "$key\n";
}
} else {
my $cursor = $db->db_cursor();
my $key = $prefix;
my $value;
if ($cursor->c_get($key, $value, DB_SET_RANGE) == 0) {
print "$key\n";
while ($cursor->c_get($key, $value, DB_NEXT) == 0) {
last unless (substr($key, 0, length($prefix)) eq $prefix);
print "$key\n";
}
}
}
Generated by GNU enscript 1.6.4.