#!/usr/bin/perl use DBI; use Getopt::Std; ################################################### # GLOBALS $dbname = "phpgroupware"; $dbhost = "192.168.0.2"; $dbport = 3306; $dbuser = "phpgroupware"; $dbpass = "phpgroupware"; %hometeaching_data = (); %membership_data = (); getopts('vsn:o:b'); $monthname2num{'Jan'} = '01'; $monthname2num{'Feb'} = '02'; $monthname2num{'Mar'} = '03'; $monthname2num{'Apr'} = '04'; $monthname2num{'May'} = '05'; $monthname2num{'Jun'} = '06'; $monthname2num{'Jul'} = '07'; $monthname2num{'Aug'} = '08'; $monthname2num{'Sep'} = '09'; $monthname2num{'Oct'} = '10'; $monthname2num{'Nov'} = '11'; $monthname2num{'Dec'} = '12'; ###################################################################### # SUBROUTINES ###################################################################### sub csv_to_hash { my ($filename, $hashref) = @_; open(FILE,$filename) || die "-E- Could not open $filename for reading\n"; my $found_header = 0; my $index = 0; while() { $line = $_; @data = split /\",/, $line; if(!$found_header) { @header = @data; $found_header = 1; } else { foreach $i (0..$#data-1) { $data[$i] =~ s/\"//g; $header[$i] =~ s/\"//g; $hashref->{$index}{$header[$i]} = $data[$i]; #print "$index: $i: $header[$i]: $data[$i]\n"; } $index++; } } close(FILE); } ###################################################################### sub print_hash { my ($hashref) = @_; foreach $key (sort {$a <=> $b} keys %$hashref) { print "Index: $key\n"; foreach $field (keys %{$hashref->{$key}}) { print "$field: $hashref->{$key}{$field}\n"; } print "\n"; } } ###################################################################### sub print_birthdays { my ($hashref) = @_; foreach $key (sort {$a <=> $b} keys %$hashref) { $name = ""; $birthday = ""; foreach $field (keys %{$hashref->{$key}}) { if($field =~ /Full Name/) { $name = $hashref->{$key}{$field}; } if($field =~ /Birth/) { $birthday = $hashref->{$key}{$field}; } } if($name ne "" && $birthday ne "") { printf "%-30s %-10s\n",$name,$birthday; } } } ###################################################################### # MAIN ###################################################################### ################################################### # Open a connection to the database $dbh=DBI->connect("dbi:mysql:dbname=$dbname;host=$dbhost port=$dbport",$dbuser,$dbpass,{ AutoCommit=>0, PrintError=>0}) or print "Connect Failure:".$DBI::errstr."\n" and exit 2; ################################################### # Process command line options if(defined $opt_n) { $datadir = $opt_n; } else { $datadir = shift(@ARGV); } print "-> Processing all ward data files in $datadir\n"; ################################################### # Parse Ward Data Files &csv_to_hash("$datadir/Membership.csv",\%membership_data); &csv_to_hash("$datadir/HomeTeaching.csv",\%hometeaching_data); if($opt_v) { print "-> Membership Data Dump\n\n"; &print_hash(\%membership_data); print "-> HomeTeaching Data Dump\n\n"; &print_hash(\%hometeaching_data); } if($opt_b) { &print_birthdays(\%membership_data); } if($opt_s) { $dbh->disconnect(); exit; } ################################################### # Disconnect from the database $dbh->disconnect(); ######################################################################