John W. Krahn am Samstag, 3. Dezember 2005 15.27:
> John Doe wrote:
> > The Ghost am Freitag, 2. Dezember 2005 19.30:
> >>     print "$_: ";
> >>            my @lines=<FILE>;
> >
> > and close opened files:
> >
> >     close FILE or die "couldn't close $File::Find::name: $!";
> >
> >>    print "$#lines\n";
> >>        $totalLines+=$#lines; #wanted's value is ignored so we have to
> >>do this here.
> >>            return;}
> >>        print "$totalLines\n";
>
> You bring up an interesting point about closing the filehandle because
> normally you don't have to worry about that as perl will do the right
> thing. 

Not sure if I understand you correctly: 
Do you suggest *not* to close filehandles, because it's done by perl "doing 
the right thing"?
Or should one decide in every case, if closing should be explicitly done or 
not?

My thought was: When I always close filehandles, I don't have to think about 
closing or not closing them (comparable to give always signs when driving, 
even if nobody else is on the road).

For exemple perldoc -f open states:

   "[...] You don't have to close FILEHANDLE if you are immediately 
    going to do another "open" on it [...]"

In a normal case, there is one point at which any filehandle is not reopened: 
After the last reopening. So this case would have to be checked in a loop 
(pseudocode: close FH if finished reopening)?

> However in the example I posted using the $. variable: 
>
> sub wanted {
>     ...
>     () = <FILE>;
>     print "$.\n";
>     $totalLines += $.;
>     }
> print "$totalLines\n";
>
> Produces an incorrect value for $totalLines unless you close the filehandle

I did not see this point.

> but if you don't close the filehandle then you can do this:
>
> sub wanted {
>     ...
>     () = <FILE>;
>     }
> print "$.\n";

Sorry if it's just a misunderstanding by me wasting your time!

joe


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to