Joe, If you are using fh1 more than 1x in the code, and it's not explicitly closed with each use, you will start at the last line number of the previous file or across files. I had a tendency to reuse file handles, relying on perl's implicit close, and ran into the above.
The code snippet looks like it should work as written, so that reinforces the above. If finding that open file handle isn't it, then you could force a read for the first line, and then use the while loop for the rest of the file. [EMAIL PROTECTED] (Joseph Paish) wrote in news:[EMAIL PROTECTED]: > On Monday 08 November 2004 10:56, Bob Showalter wrote: >> Joseph Paish wrote: >> > how do you use the "line number" variable inside a while loop like >> > i am trying to do below? >> > >> > i never get to process the first line of the file, and as a result, >> > subsequent calculations are inaccurate. it always jumps to the >> > second "if" statement. >> >> The way you're using it looks OK to me, so something else is going >> on. How do you know the first if() block is not being executed? > > i am using the perl debugger under emacs. when i display $. after it > enters the second if() block, it shows some seemingly random number. > also, with the debugger, i can watch the logic that is being followed, > and it never enters the first "if" structure. > > what i have included below is a very small part of a program that > spans several hundred lines and i thought i had cleared up all the > logic problems except this one. if the code that i have included > below looks good (and it has been basically pulled straight out of the > actual program), then i guess i have a logic problem somewhere that i > haven't found yet. > > i'll keep looking. > > thanks > > joe > > > >> >> > thanks >> > >> > joe >> > >> > ========= >> > >> > #!/usr/bin/perl >> > use strict ; >> > use warnings ; >> > >> > open (fh1, "/path/to/data/file.txt") or die ("arg123 ... no can >> > do") ; >> > >> > while (<fh1>) { >> > chomp ; >> > if ($. == 1 ) { # first line is initial values >> > my @initial_values = split / /, $_ ; >> > # process intial values here >> > } >> > >> > if ($. > 1) { >> > #process subsequent values here >> > } >> > >> > } # end of while loop >> > >> > close (fh1) ; > -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>