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.