barries <barries@slaysys.com> wrote > `isa' is also exportable and can be called as a sub with two argu- > ments. This allows the ability to check what a reference points to. > Example > > use UNIVERSAL qw(isa); > > if(isa($ref, 'ARRAY')) { > #... > } Oh rats. That should have been mended when this was added to UNIVERSAL.pm back in perl5.004_01: These subroutines should not be imported via "use UNIVERSAL qw(...)". If you want simple local access to them you can do *isa = \&UNIVERSAL::isa; to import isa into your package. So the attached patch should be applied to perl5.004_01. (Actually, it works nicely on bleadperl as well. :-) Mike Guy --- ./pod/perlobj.pod.orig Thu Apr 26 14:11:24 2001 +++ ./pod/perlobj.pod Thu Apr 26 14:17:11 2001 @@ -361,12 +361,12 @@ C<isa> returns I<true> if its object is blessed into a subclass of C<CLASS> -C<isa> is also exportable and can be called as a sub with two arguments. This -allows the ability to check what a reference points to. Example +You can also call C<UNIVERSAL::isa> as a sub with two arguments. The +first does not need to be an object or even a reference. This +allows the ability to check what a reference points to, or whether +something is a reference of a given type. Example - use UNIVERSAL qw(isa); - - if(isa($ref, 'ARRAY')) { + if(UNIVERSAL::isa($ref, 'ARRAY')) { #... } @@ -397,8 +397,7 @@ You may add other methods to the UNIVERSAL class via Perl or XS code. You do not need to C<use UNIVERSAL> to make these methods -available to your program. This is necessary only if you wish to -have C<isa> available as a plain subroutine in the current package. +available to your program (and you should not do so). =head2 Destructors End of patchThread Previous | Thread Next