X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlobj.pod;h=e466dc7dd7f3e20c9454820effe45adbc9fdbc4a;hb=4521542890c02b2ddcb4a39429066bc380e4e5e7;hp=d1938ab428ca0d06d544d931c7120b61cab5f796;hpb=5f7b1de22e3be0e3f05fdadba0a03b7c5b4ac267;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlobj.pod b/pod/perlobj.pod index d1938ab..e466dc7 100644 --- a/pod/perlobj.pod +++ b/pod/perlobj.pod @@ -361,21 +361,41 @@ are inherited by all other classes: C returns I if its object is blessed into a subclass of C -C 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 as a subroutine with two arguments. +The first does not need to be an object or even a reference. This +allows you 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')) { #... } +To determine if a reference is a blessed object, you can write + + print "It's an object\n" if UNIVERSAL::isa($val, 'UNIVERSAL'); + =item can(METHOD) C checks to see if its object has a method called C, if it does then a reference to the sub is returned, if it does not then I is returned. +C can also be called as a subroutine with two arguments. +It'll always return I if its first argument isn't an object or a +class name. So here's another way to check if a reference is a +blessed object + + print "It's still an object\n" if UNIVERSAL::can($val, 'can'); + +You can also use the C function of Scalar::Util: + + use Scalar::Util 'blessed'; + + my $blessing = blessed $suspected_object; + +C returns the name of the package the argument has been +blessed into, or C. + =item VERSION( [NEED] ) C returns the version number of the class (package). If the @@ -397,8 +417,7 @@ strange effects if the Perl code dynamically changes @ISA in any package. You may add other methods to the UNIVERSAL class via Perl or XS code. You do not need to C to make these methods -available to your program. This is necessary only if you wish to -have C available as a plain subroutine in the current package. +available to your program (and you should not do so). =head2 Destructors