in reply to New to Perl - Script Error

Use of uninitialized value $var8 in substr at test.pl line 24, <IN> line 2.
That warning message means that you have split a line of your input file which has fewer than 7 pipe characters.

You could change:

my ( $var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, +$var9, $var10, $var11, $var12, $var13 ) = split( /\|/, $line ); #v +ariables are separated by commas. my $type = substr( $var8, 0, 3 );
to:
my @vars = split( /\|/, $line ); if (@vars > 7) { my $type = substr( $vars[7], 0, 3); # do something }

You should also wrap your error/warning messages inside "code" tags.

Update:

if($type eq 131) {
should be:
if($type eq '131') {
or:
if($type == 131) {

Replies are listed 'Best First'.
Re^2: New to Perl - Script Error
by sumnerdu (Initiate) on Jul 21, 2011 at 17:14 UTC

    I hope I am using this forum properly. Im not seeing my responses to you in the thread.

    Here are my next warning messages:

    perl test.pl /myfolder/incoming/RIE.06242011.txt Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 1. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 1. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 1. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 2. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 2. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 2. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 3. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 3. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 3. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 4. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 4. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 4. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 5. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 5. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 5. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 6. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 6. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 6. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 7. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 7. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 7. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 8. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 8. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 8. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 9. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 9. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 9. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 10. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 10. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 10. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 11. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 11. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 11. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 12. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 12. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 12. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 13. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 13. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 13. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 14. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 14. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 14. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 15. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 15. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 15. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 16. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 16. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 16. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 17. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 17. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 17. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 18. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 18. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 18. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 19. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 19. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 19. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 20. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 20. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 20. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 21. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 21. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 21. Use of uninitialized value $line in scalar chomp at test.pl line 17, < +IN> line 22. Use of uninitialized value $line in substr at test.pl line 19, <IN> li +ne 22. Use of uninitialized value $line in split at test.pl line 25, <IN> lin +e 22.
    Script
    #!/usr/bin/perl -w @files = </myserver/incoming/*.txt>; foreach $file (@files) { print $file . "\n"; #last unless defined $file; open(IN,$file) || die ("Could not open file"); open(OUT131,'>>/myserver/outgoing/data131.txt'); open(OUT186,'>>/myserver/outgoing/data186.txt'); open(OUT999,'>>/myserver/outgoing/data999.txt'); while (<IN> ne "") { my $line = $_; chomp($line); my $firstchar = substr($line,0,1); if($firstchar eq "#") { next; } my @vars1 = split( /\|/, $line ); if (@vars > 7) { my $type = substr( $vars[7], 0, 3); if($type eq "131") { print OUT131 $line . "\n"; } elsif($type eq "186") { print OUT186 $line . "\n"; } else { print OUT999 $line . "\n"; } } } close(IN); close(OUT131); close(OUT186); close(OUT999); my $newfile='/myserver/incoming/processed/new_file.txt'; #rename $file, $newfile; #use File::Copy; #move($file, $newfile) or die "The move operation failed: $!"; } exit 0;

      while (<IN> ne "") { my $line = $_; chomp($line);
      Try:
      while (my $line = <IN>) { chomp($line);