in reply to Null in Array

If, by 'null' and 'blank', you mean undef, note that length undef is zero. That's also true of the empty string, ''. This may work for you,

if (length $day[5]) { print $day[5]; } else { print '00:00:00'; }
or just, print length($day[5])? $day[5]: '00:00:00'; See trinary op, ?:, in perlop.

After Compline,
Zaxo

Replies are listed 'Best First'.
Re: Re: Null in Array
by Pyramid (Initiate) on Jul 29, 2003 at 22:15 UTC
    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 }