Thank you for your help! I guess that I was not using the undef correctly? Now, when the filed in the array is blank "00:00:00" is put into the array. My code now works and looks like this:
#!/usr/bin/perl -w
use DBI;
my $dbh = DBI->connect('DBI:ODBC:PERL', {AutoCommit => 1},)
or die "Couldn't connect to database: " . DBI->errstr;
$log = print "Enter FS log name> ";
chomp($log);
open($LogDate, ">>LogDate.txt");
while ($log = <>) {
open(DATA,$log);
@file = <DATA>;
close(DATA);
foreach $line (@file) {
$line =~ s/"//g;
@day = split(/ /,$line);
$func = shift @day;
if ($func =~ /^Initiated|^Execution/) {
if ($day[2] =~/on/) {
chomp($log);
print "\n$log,$day[3],$day[1],";
print $LogDate "\n$log,$day[3],$day[1],";
}
if ($day[2] =~ /terminated/) {
print "$day[5]";
print $LogDate "$day[5]";
}
}
}
close($LogDate);
open(DATA,"LogDate.txt");
@file = <DATA>;
close(DATA);
foreach $line (@file) {
chomp($line);
@array = split(/,/,$line);
########## This is where the problem was ##########
if (length $array[3]) {
# do nothing
}
else {
$array[3] = '00:00:00';
}
##################################################
$dbh->do("INSERT INTO tblLogDate (Log,Dte,Start,Stop)values('$
+array[0]','$array[1]','$array[2]','$array[3]')");
}
$dbh->disconnect;
exit
}
|