in reply to Re: How to skip a line?
in thread How to skip a line?

Thanks for your help - still not working though! Best to assume ive made a schoolboy error somewhere. Heres my current code. OUTFILE3 is now blank.
local $/ = ''; # run script while (<$INFILE1>){ # define variables $FULL_LINE = $_; $TABDISPLAY = 0; $FIELDDISPLAY = 0; $DATEFIELD = 0; $SHORTLINE = substr($FULL_LINE,0,length($FULL_LINE)-2); @LINEARRAY[0..9] = split(/"+/, $SHORTLINE); # decide if input line is table name or field name if ( my ($table) = /^ADD TABLE "([^"]+)"/ ) { $TABDISPLAY=1; print OUTFILE3 ("table=" . "$table \n"); } elsif ( my ($field, $table, $type) = /^ADD FIELD "([^"]+)" OF "([^"]+)" AS (\w+)/ ) { my ($format) = /^ FORMAT "([^"]+)"/m; $FIELDDISPLAY=1; my ($format)=$FIELDLENGTH; print OUTFILE3 ("field=" . "$field \n"); print OUTFILE3 ("type=" . "$type \n"); print OUTFILE3 ("length=" . "$FIELDLENGTH \n"); }

Replies are listed 'Best First'.
Re^3: How to skip a line?
by jethro (Monsignor) on Jun 04, 2008 at 11:29 UTC
    First and most important hint: Call perl with the -w parameter. On Unix you just have a first line "#!/usr/bin/perl -w" which does that automatically, with ActiveState Perl or whatever you are using on windows you might have to use perl /w <scriptname> on the command shell, I don't know how it works there.

    This will tell you that you have defined $table and $format twice (with my). Not a problem and not an error, but it leads to errors later when you want to use the first $format value and get only the second $format.

    It will also tell you that $FIELDLENGTH is undefined. The error message is "Use of uninitialized value in concatenation (.) or string at ./t4.pl line XX" with XX the line in which you print $FIELDLENGTH. So you never put anything into that variable

    Another hint: chomp() can be used to delete CR/LF line endings from a string. Much easier than substr(...) and works on unix too (where there is only one character, CR, as a line ending).