Re: [PATCH] gitweb: Show project README if available
- From
Junio C Hamano <junkio@cox.net>
- Date
- Oct 11, 2006, 19:32 UTC
- Message-ID
- <7v3b9utzqi.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <egje5k$5rn$1@sea.gmane.org>
Jakub Narebski <jnareb@gmail.com> writes:
Show 21 quoted lines
> Jeff King wrote:
>
>> On Wed, Oct 11, 2006 at 02:23:00PM +0200, Jakub Narebski wrote:
>>
>>> Can any Perl expert tell us how Perl truly solve this? What is the best
>>> way to dump whole [remaining] contents of file (from filehandle) to STDOUT?
>>
>> The same you would in C: read fix-sized buffers and dump them.
> [...]
>> Or you can use the File::Copy module, which is part of the standard
>> distribution (and I believe has been so for all perl5 versions, but I
>> could be wrong):
>
> And
>
> {
> local $/;
> print <$fd>;
> }
>
> doesn't do the right thing?Jakub, you asked for "the best way" not "any way that would produce a correct result". Your 4-liner is shorter in the source but it risks slurping a 10 megabyte file into memory first, only to discard it after immediately writing it out.
You can strace your Perl to see what yours does yourself:
strace perl -e 'print <STDIN>' >/dev/null <some-huge-file
You will see a bunch of read(0, ..., 4096) and after all of that finishes, finally you will see a bunch of write(1, ..., 4096). Where do you think the data is in the meantime?
Jeff gave you better ways that do not have that problem.