opening a file in perl

Anthony Wesley Anthony.Wesley at prometheus.com.au
Wed May 1 10:19:22 EST 2002


Nemo - earth native wrote:
> 
> Hi guys, a quick question for the perl guru's around...
> 
> I've a small script which opens a file, reads through it looking for
> various information, uses that to calculate some figures, and closes.
> 
> Pretty simple stuff.
> 
> ...except when the file being opened is the better part of 400meg,
> and so I get Out of Memory errors - the perl seems to wants to read the
> whole file into memory before looking at it at all.
> 
> At the moment is opens the file as such:
>         open( IN, "chunk.txt" ) or die "Hrm. Couldn't open the file./n";
> 
> And then just runs through line by line:
>         foreach my $line ( <IN> )
>         {
> (insert a few possible regexp matches in `if` statements here. simple stuff)
>         }
> 
> So, how do you get perl to not load the whole file into memory?
> 
> .../Nemo


Just to be clear - executing a filehandle in an array context triggers special behaviour. The file is read into memory and then
split into an array of lines (or whatever the record separator variable is set to) before the rest of that statement is allowed
to run.

This happens when doing something innocent like 

		foreach $line (<IN>)

cheers, Anthony




More information about the linux mailing list