Chris Stinemetz wrote:
Hello List,
Hello,
I'm stumped on this one.
I'm getting this error:
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 6.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 8.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 10.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 13.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 16.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 23.
Use of uninitialized value in length at ./DBSR.pl line 21,<> line 25.
I just want to skip to the next line of input data if any of the
array elements have no value (0 in length).
#!/usr/bin/perl
use warnings;
use strict;
use POSIX;
use Data::Dumper;
my $fileOut = "testOut.txt";
open my $fin, '<', $fileIn or die "ERROR opening $fileIn: $!";
open my $out, '>', $fileOut or die "ERROR opening $fileOut: $!";
my @fields;
while(<> ) {
next unless /;/;
chomp;
my @data = split /;/;
If your data has empty fields at the end of the record then using split
like that will not process those fields correctly. What you need is:
my @data = split /;/, $_, -1;
my($Icell,$Isect,$Ichan,$cfc,$cfcq,$rtd) = @data[9,10,27,36,37,40];
next if(length($Icell) == 0);
next if(length($Isect) == 0);
next if(length($cfc) == 0);
next if(length($cfcq) == 0);
next if(length($rtd) == 0);
$rtd = sprintf "%.2f", $rtd/8/6.6/2;
push(@fields, $Icell,$Isect,$Ichan,$cfc,$cfcq,$rtd);
}
print Dumper \@fields;
John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction. -- Albert Einstein
--
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]
http://learn.perl.org/