in reply to multiple __DATA__ && __END__

tell and seek may be used to jump around in the single __DATA__ section, allowing pretty flexible access. But let me mention something else.

I know this isn't exactly what you're asking. But there are instances where it might be just as appropriate, and somewhat simpler to use one or more HERE documents instead of the <DATA> filehandle. ...just a thought... there's always more than one way to do it. ;) A HERE doc will be equivilant to slurping an entire file into a scalar. But maybe that's not so bad in some situations. And with multiple HERE docs, the possibilities open up.


Dave


"If I had my life to live over again, I'd be a plumber." -- Albert Einstein

Replies are listed 'Best First'.
Re^2: multiple __DATA__ && __END__
by Coruscate (Sexton) on Nov 21, 2003 at 00:09 UTC

    tell and seek may be used to jump around in the single __DATA__ section.

    Quite true. I'm just going to throw in the mention that tell() really is needed if you are planning to seek() your way through *DATA. Simply because *DATA is an extension of your file, so seek DATA, 0, 0; brings you to the start of the file, rather than the start of the __DATA__ section. (P.S.: I gather that you already knew this, as per your mention of tell(). Just wanted to throw in the extra info for anyone who stumbles across this and wonders how to do such a thing).

    #!c:/perl/bin/perl -w $|++; use strict; # incorrect - maybe not what you expect print scalar <DATA>; seek DATA, 0, 0; # seeks to first line of file! print scalar <DATA>; __DATA__ foo bar

    #!c:/perl/bin/perl -w $|++; use strict; # correct my $start = tell DATA; # tells us where __DATA__ begins print scalar <DATA>; seek DATA, $start, 0; # seek to the saved point print scalar <DATA>; __DATA__ foo bar