For my own code, I even prefer to
use IO::File because that gives me all that neat OO stuff on the file handle. And the additional benefit to be able to test for the type of a scalar which happens to be passed to me, by checking for
ref $fh eq 'IO::File'.
But that's much typing for oneliners...
Update: As merlyn correctly pointed out:
"Please don't do that. Your code is fragile. It will break when I pass an object that subclasses IO::File but acts in every way like an IO::File".
So I went through my latest and greatest module, which grossly offends against this statement, and quietly changed my test to read:
...
croak("Invalid type for 'outfile', missing method print()'")
unless $outfile->can('print');
...
The immediate benefit is that I now can use IO::Scalar from my test script to get output in a variable instead of a file (or STDOUT). Cool!
--
Cheers, Joe