Conserving memory - was SPUG: Fw: greetings

Matt Tucker tuck at whistlingfish.net
Sun Oct 21 07:08:48 CDT 2001


-- "Tim Maher/CONSULTIX" <tim at consultix-inc.com> spake thusly:

>> or should I be using:
>> 
>> open(FH, "<templates/RealTop.htm");
>> print "Content-Type: text/html\n\n";
>> while ($line = <FH>) {
>>     print "$line\n";

This should be:

     print $line;

to avoid getting doubled newlines. But then, no-one's actually going to
write this code anyway, when a simple:

     system qw(cat templates/RealTop.htm);

will do.


>> }
>> >> Ken Clarke
>> >> Contract Web Programmer / E-commerce Technologist
>> >> www.perlprogrammer.net
> 
> For efficiency, this is definitely the way to  go, but
> the while loop is better written as:
> 
> 	 while ( defined ($line = <FH>) ) {

I almost said this the last time the subject came up, but then I
couldn't think of a case in which "scalar <FH>" might return a false
value before EOF, since the delimiter is always included, and even a
blank line will be "\n".

I just did a bit more reading, and came up with a few:

    - The last line of the file has no trailing newline
    - $/ is undef, and the file is empty (always returns '' the
      first time)
    - The delimiter is '0', and two such occur together in the file

While these aren't really very common cases in which the true/defined
distinction is relevant, it's probably better to be safe since it's one
less rule to have to think about.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 232 bytes
Desc: not available
Url : http://mail.pm.org/archives/spug-list/attachments/20011021/d0c6cde5/attachment.bin


More information about the spug-list mailing list