in reply to Re: open, file handles and memory
in thread open, file handles and memory

When you instruct the Perl interpreter to read the next line of the file, it can't know in advance how long the line will be, so it's logical that it itself reads larger chunks at a time, and buffers the input, just like the OS does (YMMV).

Replies are listed 'Best First'.
Re: Re:ading lines
by Fastolfe (Vicar) on Jan 13, 2001 at 21:13 UTC
    Performing an 'strace' on this code:
    open(F, "<README"); # arbitrary $|=1; while(<F>) { print "line $.\n"; }
    Results in this:
    open("README", O_RDONLY|O_LARGEFILE) = 3 read(3, "\t\t GNU GENERAL PUBLIC LICENSE"..., 4096) = 4096 # firs +t block write(1, "line 1\n", 7line 1 write(1, "line 2\n", 7line 2 ... write(1, "line 80\n", 8line 80 read(3, " and appropriately publish on ea"..., 4096) = 4096 # seco +nd block write(1, "line 81\n", 8line 81
    So it does appear to buffer the data in chunks, but they seem to be managably sized. This too may differ depending upon OS or build of Perl.