[tpm] how to delete array entries en-passant
Stuart Watt
stuart at morungos.com
Wed Jun 30 09:45:43 PDT 2010
You could take the alternative route of turning the string into a file handle, using open on a reference to the string (an example is shown in perldoc -f open), and then having a single regular while loop over lines read from a file handle (whether from string or file), chomping and processing. This would likely be the most memory efficient, as you'd never need a second copy of the input in memory. Useful if you could be dealing with very large files.
I think this may be Perl 5.10. Perl 5.8 might use a separate module, IO::String, for the same purpose, if I remember right.
Just a thought - but I do love the way Perl allows you to work with a file handle backed by a string so easily.
All the best
Stuart
On 2010-06-30, at 9:35 AM, Fulko Hew wrote:
>
>
> On Wed, Jun 30, 2010 at 12:31 PM, <arocker at vex.net> wrote:
> >
> > OK, let me give you the specific example...
> > The array contains all of the lines of a file...
> > The foreach is used to loop over then, and 'take action' upon them.
> > But when I'm done I want all the empty lines stripped from the array
> > ('just
> > because!')
> >
> Does the process require the presence of the entire file in memory before
> the loop, and the shuffled-down file afterwards? Do you output the
> remaining lines?
>
> No, but I need to output the 'remaining' lines.
>
> Also I forgot to mention, the reason the original data was in an array, was because
> it came from one of two sources... slurping a file, or a 'received' string.
> So I thought I'd first normalize either dataset into the array I would then traverse.
>
> _______________________________________________
> toronto-pm mailing list
> toronto-pm at pm.org
> http://mail.pm.org/mailman/listinfo/toronto-pm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/toronto-pm/attachments/20100630/6fd46c21/attachment.html>
More information about the toronto-pm
mailing list