source: trunk/third/perl/lib/UNIVERSAL.pm @ 18450

Revision 18450, 3.7 KB checked in by zacheiss, 21 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18449, which included commits to RCS files with non-trunk default branches.
Line 
1package UNIVERSAL;
2
3our $VERSION = '1.00';
4
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 can't be fixed without breaking code.  Note that we
8# *don't* set @ISA here, don't want all classes/objects inheriting from
9# Exporter.  It's bad enough that all classes have a import() method
10# whenever UNIVERSAL.pm is loaded.
11require Exporter;
12*import = \&Exporter::import;
13@EXPORT_OK = qw(isa can VERSION);
14
151;
16__END__
17
18=head1 NAME
19
20UNIVERSAL - base class for ALL classes (blessed references)
21
22=head1 SYNOPSIS
23
24    $is_io = $fd->isa("IO::Handle");
25    $is_io = Class->isa("IO::Handle");
26
27    $sub = $obj->can("print");
28    $sub = Class->can("print");
29
30    use UNIVERSAL qw( isa can VERSION );
31    $yes = isa $ref, "HASH" ;
32    $sub = can $ref, "fandango" ;
33    $ver = VERSION $obj ;
34
35=head1 DESCRIPTION
36
37C<UNIVERSAL> is the base class which all bless references will inherit from,
38see L<perlobj>.
39
40C<UNIVERSAL> provides the following methods and functions:
41
42=over 4
43
44=item $obj->isa( TYPE ), CLASS->isa( TYPE ), isa( VAL, TYPE )
45
46    C<TYPE> is a package name
47    $obj is a blessed reference or a string containing a package name
48    C<CLASS> is a package name
49    C<VAL> is any of the above or an unblessed reference
50
51When used as an instance or class method (C<$obj->isa( TYPE )>), C<isa>
52returns I<true> if $obj is blessed into package C<TYPE> or inherits from
53package C<TYPE>.
54
55When used as a class method (C<CLASS->isa( TYPE )>; sometimes referred to as a
56static method), C<isa> returns I<true> if C<CLASS> inherits from (or is itself)
57the name of the package C<TYPE> or inherits from package C<TYPE>.
58
59When used as a function, like
60
61   use UNIVERSAL qw( isa ) ;
62   $yes = isa $h, "HASH";
63   $yes = isa "Foo", "Bar";
64
65or
66
67   require UNIVERSAL ;
68   $yes = UNIVERSAL::isa $a, "ARRAY";
69
70, C<isa> returns I<true> in the same cases as above and also if C<VAL> is an
71unblessed reference to a perl variable of type C<TYPE>, such as "HASH",
72"ARRAY", or "Regexp".
73
74=item $obj->can( METHOD ), CLASS->can( METHOD ), can( VAL, METHOD )
75
76C<can> checks if the object or class has a method called C<METHOD>. If it does
77then a reference to the sub is returned. If it does not then I<undef> is
78returned.  This includes methods inherited or imported by C<$obj>, C<CLASS>, or
79C<VAL>.
80
81C<can> cannot know whether an object will be able to provide a method
82through AUTOLOAD, so a return value of I<undef> does not necessarily mean
83the object will not be able to handle the method call. To get around
84this some module authors use a forward declaration (see L<perlsub>)
85for methods they will handle via AUTOLOAD. For such 'dummy' subs, C<can>
86will still return a code reference, which, when called, will fall through
87to the AUTOLOAD. If no suitable AUTOLOAD is provided, calling the coderef
88will cause an error.
89
90C<can> can be called as a class (static) method, an object method, or a
91function.
92
93When used as a function, if C<VAL> is a blessed reference or package name which
94has a method called C<METHOD>, C<can> returns a reference to the subroutine.
95If C<VAL> is not a blessed reference, or if it does not have a method
96C<METHOD>, I<undef> is returned.
97
98=item VERSION ( [ REQUIRE ] )
99
100C<VERSION> will return the value of the variable C<$VERSION> in the
101package the object is blessed into. If C<REQUIRE> is given then
102it will do a comparison and die if the package version is not
103greater than or equal to C<REQUIRE>.
104
105C<VERSION> can be called as either a class (static) method, an object method or
106or a function.
107
108
109=back
110
111These subroutines should I<not> be imported via S<C<use UNIVERSAL qw(...)>>.
112If you want simple local access to them you can do
113
114  *isa = \&UNIVERSAL::isa;
115
116to import isa into your package.
117
118=cut
Note: See TracBrowser for help on using the repository browser.