Jeff 'Japhy' Pinyan wrote:
>
> On Oct 8, Rob Dixon said:
> >
> >Jeff 'Japhy' Pinyan wrote:
> >>
> >>   open BLAH, "< c:/Inetpub/wwwroot/dg/menu.txt"
> >>     or die "can't read c:/Inetpub/wwwroot/dg/menu.txt: $!";
> >
> >  my $fd;
> >  open $fd, '< c:/Inetpub/wwwroot/dg/menu.txt';
> >
> >might be a better match? With $fd in place of 'BLAH' in the
> >rest of the code.
>
> Only if he's got a version of Perl that supports that syntax.

True. I think it's been around since 5.0. Do you know?

> >> >$line = fread($fd,filesize("C:\Inetpub\wwwroot\dg\menu.txt"));
> >>
> >>   my $content = join "", <BLAH>;
> >>   # or
> >>   my $content;  { local $/; $content = <BLAH>; }
> >>   # or
> >>   read(BLAH, my $content, -s BLAH);
> >>   # etc.
> >
> >I'm staying faithful to:
> >
> >  my $content = do {local $/; <$fd>};
>
> Last I checked, that makes TWO copies of the string from <$fd>:  one in
> the do BLOCK, and then it gets copied and returned to $content.  I could
> be wrong, but I think I heard about it on p5p.

That's interesting. You mean there's a temporary internal
scalar in the copy process? It's almost certainly the same
as:

  sub readall {
    my $fh = shift;
    local $/;
    <$fh>;
  }

  my $content = readall \*FH;

when the return value would have to be stacked.

Certainly worth thinking about for Gb files, but
it's ripe for in-line optimisation.

I might check. One day :)

Cheers,

Rob



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to