in reply to Processing slurped file.

For one thing, you can do something like:
my @records = <BIGFILE>;
which will slurp but does not chomp at the same time; however, the impact of the CR will have little effect on your matching.

Since you then have to write out to a file, there's no need to wastefully add the carriage return before you split the file, so instead, you can do:

my @records = <BIGFILE>; my @london = grep /LONDON/, @records; print LONDONFILE join "", @london;
Finally, this type of situation is an ideal one where slurping is inefficient, unless you're repeating the process multiple times; it's probably much easier and less of a memory hog to process line by line:
while ( my $line = <BIGFILE> ) { /LONDON/ ? print LONDONFILE $line,"\n" : print OTHERFILE $line,"\n"; }

Updates as arturo pointed out to me that slurping in array mode doesn't chomp.

-----------------------------------------------------
Dr. Michael K. Neylon - mneylon-pm@masemware.com || "You've left the lens cap of your mind on again, Pinky" - The Brain
It's not what you know, but knowing how to find it if you don't know that's important

Replies are listed 'Best First'.
Re: Re: Processing slurped file.
by Jonathan (Curate) on Sep 18, 2001 at 19:39 UTC
    Hmmm, surely setting $/ to undef will cause @records to contain just one record?