Commit | Line | Data |
---|---|---|
def3c102 | 1 | package UNIVERSAL; |
2 | ||
b75c8c73 MS |
3 | our $VERSION = '1.00'; |
4 | ||
84902520 TB |
5 | # UNIVERSAL should not contain any extra subs/methods beyond those |
6 | # that it exists to define. The use of Exporter below is a historical | |
7 | # accident that should be fixed sometime. | |
def3c102 | 8 | require Exporter; |
84902520 | 9 | *import = \&Exporter::import; |
a66bc3b0 | 10 | @EXPORT_OK = qw(isa can); |
def3c102 | 11 | |
12 | 1; | |
13 | __END__ | |
14 | ||
15 | =head1 NAME | |
16 | ||
17 | UNIVERSAL - base class for ALL classes (blessed references) | |
18 | ||
19 | =head1 SYNOPSIS | |
20 | ||
def3c102 | 21 | $io = $fd->isa("IO::Handle"); |
22 | $sub = $obj->can('print'); | |
23 | ||
84902520 TB |
24 | $yes = UNIVERSAL::isa($ref, "HASH"); |
25 | ||
def3c102 | 26 | =head1 DESCRIPTION |
27 | ||
28 | C<UNIVERSAL> is the base class which all bless references will inherit from, | |
29 | see L<perlobj> | |
30 | ||
31 | C<UNIVERSAL> provides the following methods | |
32 | ||
33 | =over 4 | |
34 | ||
35 | =item isa ( TYPE ) | |
36 | ||
37 | C<isa> returns I<true> if C<REF> is blessed into package C<TYPE> | |
38 | or inherits from package C<TYPE>. | |
39 | ||
40 | C<isa> can be called as either a static or object method call. | |
41 | ||
42 | =item can ( METHOD ) | |
43 | ||
44 | C<can> checks if the object has a method called C<METHOD>. If it does | |
7e1af8bc | 45 | then a reference to the sub is returned. If it does not then I<undef> |
def3c102 | 46 | is returned. |
47 | ||
48 | C<can> can be called as either a static or object method call. | |
49 | ||
50 | =item VERSION ( [ REQUIRE ] ) | |
51 | ||
52 | C<VERSION> will return the value of the variable C<$VERSION> in the | |
53 | package the object is blessed into. If C<REQUIRE> is given then | |
54 | it will do a comparison and die if the package version is not | |
55 | greater than or equal to C<REQUIRE>. | |
56 | ||
57 | C<VERSION> can be called as either a static or object method call. | |
58 | ||
59 | =back | |
60 | ||
84902520 | 61 | The C<isa> and C<can> methods can also be called as subroutines |
def3c102 | 62 | |
63 | =over 4 | |
64 | ||
84902520 | 65 | =item UNIVERSAL::isa ( VAL, TYPE ) |
def3c102 | 66 | |
96f1132b | 67 | C<isa> returns I<true> if one of the following statements is true. |
def3c102 | 68 | |
69 | =over 8 | |
70 | ||
a45bd81d | 71 | =item * |
def3c102 | 72 | |
96f1132b GS |
73 | C<VAL> is a reference blessed into either package C<TYPE> or a package |
74 | which inherits from package C<TYPE>. | |
def3c102 | 75 | |
a45bd81d | 76 | =item * |
def3c102 | 77 | |
96f1132b GS |
78 | C<VAL> is a reference to a C<TYPE> of Perl variable (e.g. 'HASH'). |
79 | ||
80 | =item * | |
81 | ||
82 | C<VAL> is the name of a package that inherits from (or is itself) | |
83 | package C<TYPE>. | |
def3c102 | 84 | |
85 | =back | |
86 | ||
84902520 | 87 | =item UNIVERSAL::can ( VAL, METHOD ) |
a66bc3b0 MG |
88 | |
89 | If C<VAL> is a blessed reference which has a method called C<METHOD>, | |
90 | C<can> returns a reference to the subroutine. If C<VAL> is not | |
91 | a blessed reference, or if it does not have a method C<METHOD>, | |
92 | I<undef> is returned. | |
93 | ||
def3c102 | 94 | =back |
95 | ||
84902520 TB |
96 | These subroutines should I<not> be imported via S<C<use UNIVERSAL qw(...)>>. |
97 | If you want simple local access to them you can do | |
98 | ||
99 | *isa = \&UNIVERSAL::isa; | |
100 | ||
101 | to import isa into your package. | |
102 | ||
def3c102 | 103 | =cut |