From: Celeste S. B. <csb...@ci...> - 2003-08-05 20:04:12
|
It sure would be nice if someone wrote a module and posted it to CPAN (hint, hint) Celeste Suliin Burris Systems Administrator Tacoma Economic Development Dept. csb...@ci... > Date: Mon, 4 Aug 2003 09:17:55 -0400 > From: "Kyle R. Burton" <mo...@vo...> > To: mdb...@li... > Subject: Re: [mdb-dev] MDB-Tools and Perl > Reply-To: "Kyle R. Burton" <mo...@vo...> > >> I am curious as to the ways in which one can interact with mdb-tools from >> within a perl script? I am not a strong programmer. I can use the system >> command from perl to start the command line utilities but can not pass it the >> required information. Does anyone have much experience of working with both >> MDB tools and perl? > > We have used MDB tools from Perl to list the tables in an MDB (using > mdb-tables), and get all the records from a table (using mdb-export). > > We either used backticks or open to read from those commands. A direct call > to the C functions (libmdb) would probably be a better long teram solution > (DBD::mdbtools would be even better). > > Pseudo code for we're using looks like: > > # returns an array of table names > sub list_tables > { > my($fileName) = @_; > my $cmd = "mdb-tables $fileName"; > my $output = `$cmd`; > if( 0 != ($? >> 8) ) { > die "Error obtaining tables list [$cmd]: $output : \$!=>$! : \$?=>$?"; > } > my @lines = split(/[\s\r\n]+/,$output); > return @lines; > } > > # returns an array of arrayrefs (array of records) > sub get_records > { > my($fileName,$tableName) = @_; > my $cmd = "mdb-export -d'\t' -Q $fileName '$tableName' |; > my $fh; > unless( open( $fh, $cmd ) ) { > die "Error opening mdb read handle: $! : cmd: '$cmd'"; > } > my @lines = <$fh>; > close $fh; > my @records; > foreach my $line ( @lines ) { > my @fields = split('\t',$line); > $fields[-1] =~ s/[\r\n]+//; > push @records, \@fields; > } > return @records; > } > > > > -- > > ------------------------------------------------------------------------------ > Wisdom and Compassion are inseparable. > -- Christmas Humphreys > mo...@vo... http://www.voicenet.com/~mortis > ------------------------------------------------------------------------------ |