shawn,
thanks for the pointers.
looks like you have saved me from buying more disks ;)!
anjan

On Thu, Aug 21, 2008 at 3:40 PM, Mr. Shawn H. Corey <[EMAIL PROTECTED]>wrote:

> On Thu, 2008-08-21 at 15:23 -0400, ANJAN PURKAYASTHA wrote:
> > ok here is the problem. i have a limited amount of memory.
> >
> > i need to open a large file (~600 megs). i have to open a filehandle,
> read
> > and process each line and write the output result into another file
> (which
> > soon grows to about 300 megs.
> > so,
> >
> > open (IN, "averylargefile");
> > open (OUT, "anotherverylargefile");
> >
> > while (<IN>){
> > chomp;
> > process line here....
> >
> > write OUT ("$abcd\n");
> > }
> >
> > close (IN);
> > close (OUT);
> >
> > Now in order to ensure that all this remains within my quota, i need to
> > delete each line i have read from the input file after i have written my
> > processed output to the output file.
> > this reduction in input file size along with a simultaneous increase in
> the
> > output file size will ensure that i do not overshoot the quota.
> >
> > does anyone have pointers on how to accomplish this in perl.
> >
> > tia,
> > anjan
> >
>
> Go out and buy yourself another disk.  Seriously.
>
>
> LOOP:
> Read the first line and process it.
> Read the second line and write were the first was.
> Read the third and write at the end of the second.
> Continue to the end of file.
> Note that if any lines are longer than the previous, you have to read
> more than one to make room to write it.
> Truncate the file after the last write.
> Rewind the file and repeat from LOOP.
>
> See:
> `perldoc -f open` and search for '<+'
> `perldoc -f seek`
> `perldoc -f tell`
> `perldoc -f truncate`
>
>
> --
> Just my 0.00000002 million dollars worth,
>  Shawn
>
> "Where there's duct tape, there's hope."
>        Cross Time Cafe
>
> "Perl is the duct tape of the Internet."
>        Hassan Schroeder, Sun's first webmaster
>
>


-- 
=============================
anjan purkayastha, phd
bioinformatics analyst
whitehead institute for biomedical research
nine cambridge center
cambridge, ma 02142

purkayas [at] wi [dot] mit [dot] edu
703.740.6939

Reply via email to