mirod has asked for the wisdom of the Perl Monks concerning the following question:

I have a slight problem: I use the following construct under 5.6.0:

if( ref($_[0]) && $_[0]->isa('GLOB')) { $fh=  shift };

This traps a filehandle reference as first optional argument of a method.

The problem is that under 5.005_03 it gives me an error message Can't call method "isa" on unblessed reference if I pass it a GLOB reference. How would I replace this with a pre 5.6 safe test?

if( ref($_[0]) eq 'GLOB') { $fh=  shift };
fails for filehandles created through an object like my $fh = new FileHandle("> $file")

I found that this seems to work but I wonder if there is a more elegant way to test it:

my $f=  shift if( ref( $_[0]) && ((ref ($_[0]) eq 'GLOB') || ( $_[0]->can(isa) && $_[0]->isa( 'GLOB'))));

Replies are listed 'Best First'.
(tye)Re: 5.6 construct under 5.005_03
by tye (Sage) on Dec 20, 2000 at 00:27 UTC
    if( UNIVERSAL::isa($_[0],"GLOB") )
            - tye (but my friends call me "Tye")