Berkley DB (DBM) files seem easy to create, but hard to read/manage. The most common task I can think of wanting to do on a database file is to dump or display it’s contents. And there’s no easy or straight forward way to do this (at least not that I found).
We were creating DBM files (from text files) for use by Apache/mod_rewrite using the httxt2dbm utility. If you create “file.dbm” it actually creates “file.dbm.pag” and “file.dbm.dir”.
To output the contents of the DBM file(s), Perl comes to the rescue. A colleague of mine wrote this after we searched the net for a working script and failed to find one. I’m sharing it in hopes someone will find it useful.
#!/usr/bin/perl #- dumpdbm.pl # /path/to/dumpdbm.pl /path/to/file.dbm # use SDBM_File; use strict; my ($name) = @ARGV; die "Missing DBM name.\n" unless $name; my %map; tie( %map, 'SDBM_File', $name, 'O_RDONLY', 0644 ) || die "Can't open DBM file\n"; for my $k (sort(keys %map)) { # value is terminated by a null character, but the hash value contains cruft after that # so cut off the value at the first \0 my @v = split("\0",$map{$k}); print $k, "\t", $v[0], "\n"; } untie %map; exit;
I wanted to use the RSS-FEED but it showing me some Xml errors…
If you were trying to use the RSS to the comments on this particular post, it should now work. However, if you were trying to use the main RSS feed for the site, you should use: http://alanwhipple.com/feed/
Which is valid, with a warning about the <object> tags.
Using this for re-directing old to new pages on a high traffic Website:
# rewrite map for old to new
RewriteEngine On
RewriteMap rewmap txt:/var/www/rewrite.map
RewriteCond ${rewmap:$1} ^(.+)$
RewriteRule ^(.*) %1 [R,L]
If I create httxt2dbm -i rewrite.map -o rewrite.dbm
How much performance do I get, the map is cached in memory, anyways.