If the file is relatively small, why not read it into an array, then just manipulate the array index? Something like:
my @{lines} = <IN>; close( IN ); my ${ln} = 0; while( ${ln} <= $#lines + 1 ) { # check ${lines[${ln}]} and manipulate ${ln} accordingly. } > I would suggest the following approach: > > # some bigger loop > while (...) { > my $line = ""; > > while (<IN>) { > if (/\\ex|\\begin{instructions}/) { > seek IN, -length, 1; > last; > } > $line .= $_; > } > } > On Wed, 30 Jun 2004 16:32:00 -0400 (EDT), Jeff 'japhy' Pinyan wrote > On Jun 30, David Arnold said: > > >As I begin reading in lines from the file, I just print them until I hit a > >line that has an opening "\ex" in it. At that point I want to accumulate > >lines in one long string until I hit either "\begin{instructions}" or > >another "\ex". > > > >$line.=<IN> #unless the current line coming in from IN is the start > > #of a new \ex or a \begin{instructions} > > > >The difficulty is now I've read one line too many. I'd like to "put this > >last line back" for the next round of reading while I process the > >accumulated exercise lines. > > I would suggest the following approach: > > # some bigger loop > while (...) { > my $line = ""; > > while (<IN>) { > if (/\\ex|\\begin{instructions}/) { > seek IN, -length, 1; > last; > } > $line .= $_; > } > } > > This uses the seek() function to go to a position in the file. The last > argument, 1, means we're moving relative to where we are now. The middle > argument, -length, is the number of bytes to move. So if the line > is 20 characters long, we're going 20 characters back from where we > are now, essentially to the start of the line. > > -- > Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/ > RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/ > CPAN ID: PINYAN [Need a programmer? If you like my work, let me know.] > <stu> what does y/// stand for? <tenderpuss> why, yansliterate of course. > > -- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > <http://learn.perl.org/> <http://learn.perl.org/first-response> -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>