#!/usr/bin/perl # # Copyright (c) 2002 Steve Slaven, All Rights Reserved. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, # MA 02111-1307 USA # # A database exporter/importer for using the DB_File and tie() use DB_File; use Data::Dumper; use Getopt::Std; getopts( 'ieh', \%o ); die( qq{ dbexim v1.0 DB file export/import Author: Steve Slave - http://hoopajoo.net Usage: $0 [-hie] DBFILE TEXTFILE -i import TEXTFILE into DBFILE -e export DBFILE to TEXTFILE Uses Data::Dumper to make a plain-text rendition of a binary DB file to allow re-importing using newer libraries or on another platform } ) if $o{ h }; die( 'Must use -i or -e' ) unless( $o{ i } || $o{ e } ); my $dbfile = shift( @ARGV ); my $txfile = shift( @ARGV ); tie %db, 'DB_File', $dbfile || die( "Couldn't tie '$dbfile': $!" ); if( $o{ i } ) { # Import print "Importing $txfile into $dbfile...\n"; open( IN, $txfile ) || die( "Couldn't open '$txfile': $!" ); $var = join( "", ); close( IN ); my $href = eval( $var ); for( keys( %{ $href } ) ) { print "$_ => " . $href -> { $_ } . "\n"; $db{ $_ } = $href -> { $_ }; } }elsif( $o{ e } ) { # Export $ref = \%db; print "Exporting $dbfile to $txfile...\n"; open( OUT, ">$txfile" ) || die( "Couldn't open '$txfile': $!" ); print OUT Dumper( $ref ); close( OUT ); }