On Oct 25, 2013, at 4:46 PM, Shaji Kalidasan wrote: > Dear Perlers, > > I am trying to print the matching lines using __DATA__ filehandle and for the > very first time it prints the desired lines, but as soon as I rewind it using > seek, it is printing lines from the very beginning which is not the desired > result (as it prints from the start). I want to rewind only the __DATA__ part.
As you have discovered, the special file handle DATA is opened to the source file for your program. When the compiler encounters either of the following lines in your source file: __END__ __DATA__ it stops reading the source file and leaves the file handle open at that point. The first time you read the <DATA> file handle, you get the line after the '__DATA__' line. But when you rewind the file handle, it is positioned at the beginning of the file, and you get to read your program. You have two choices (at least): 1. Save the position of the file handle when you enter the program: my $data_pos = tell(<DATA>); Then reposition the file to this point instead of at the beginning of the file: seek( DATA, $data_pos, 0 ); 2. After rewinding the file to the beginning with seek(DATA,0,0), read the file until you encounter the '__DATA__' line. Then start reading the data lines. -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/