#!/usr/local/bin/perl -w # mvs-dump-db.pl use DBI; use strict; use vars qw(%ENV $VERSION); $VERSION = "0.06"; my $DEBUG = 0; my $mvs_dir = "$ENV{HOME}/mvs_reports"; my $db_dir = "${mvs_dir}/mvs_db"; my $table = "mvslog"; my $db_file = "${db_dir}/${table}.dbf"; # data point fields my @dpfields = qw( LOGDATE HOST IP NUMBER TYPE ); # the current working data point # contains keys: logdate, host, ip, number, type #my $dpoint = {}; # array of data points from the database my $dbdata = []; if (not -d $mvs_dir) { die "Missing base directory ${mvs_dir}, exiting."; } if (not -d $db_dir) { die "Missing database directory ${db_dir}, exiting."; } if (not -f $db_file) { die "Missing database file ${db_file}, exiting."; } my $dbh = DBI->connect("dbi:XBase:${db_dir}"); my $rv; $rv = load_dbdata($dbh, $table, $dbdata); dprint("rv=", $rv); $rv = dump_data($dbdata); dprint("rv=", $rv); # end sub load_dbdata { my $dbh = shift; my $table = shift; my $dbdata = shift; my $sql = "select logdate, host, ip, number, type " . "from ${table}"; dprint("load_dbdata sql=", $sql); my $sth = $dbh->prepare($sql); my $rv = $sth->execute; dprint("load_dbdata rv=", $rv); my $row_ref; while ($row_ref = $sth->fetchrow_hashref) { dprint("keys row_ref=", keys %{$row_ref}); dprint("values row_ref=", values %{$row_ref}); push @{$dbdata}, $row_ref; } return scalar @{$dbdata}; } # dump data from database sub dump_data { my $dbdata = shift; my ($tempdp, $dpf); dprint("dbdata=", $dbdata); for $tempdp (@{$dbdata}) { dprint("keys tempdp=", keys %{$tempdp}); dprint("values tempdp=", values %{$tempdp}); print join(", ", map { "$tempdp->{$_}" } @dpfields); print "\n"; } } # print debug info if $DEBUG is on sub dprint { if (not $DEBUG) { return; } my ($pkg, $file, $line, $sub, @others) = caller(1); print "${sub} ${line} : "; print join(' ', map { $_ || 'undef' } @_), "\n"; }