Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

parent (3)

Name

parent - Establish an ISA relationship with base classes at compile time

Synopsis

package Baz;
use parent qw(Foo Bar);

Description

Perl Programmers Reference Guide                                     parent(3)



NAME
       parent - Establish an ISA relationship with base classes at compile
       time

SYNOPSIS
           package Baz;
           use parent qw(Foo Bar);

DESCRIPTION
       Allows you to both load one or more modules, while setting up
       inheritance from those modules at the same time.  Mostly similar in
       effect to

           package Baz;
           BEGIN {
               require Foo;
               require Bar;
               push @ISA, qw(Foo Bar);
           }

       By default, every base class needs to live in a file of its own.  If
       you want to have a subclass and its parent class in the same file, you
       can tell "parent" not to load any modules by using the "-norequire"
       switch:

         package Foo;
         sub exclaim { "I CAN HAS PERL" }

         package DoesNotLoadFooBar;
         use parent -norequire, 'Foo', 'Bar';
         # will not go looking for Foo.pm or Bar.pm

       This is equivalent to the following code:

         package Foo;
         sub exclaim { "I CAN HAS PERL" }

         package DoesNotLoadFooBar;
         push @DoesNotLoadFooBar::ISA, 'Foo', 'Bar';

       This is also helpful for the case where a package lives within a
       differently named file:

         package MyHash;
         use Tie::Hash;
         use parent -norequire, 'Tie::StdHash';

       This is equivalent to the following code:

         package MyHash;
         require Tie::Hash;
         push @ISA, 'Tie::StdHash';

       If you want to load a subclass from a file that "require" would not
       consider an eligible filename (that is, it does not end in either ".pm"
       or ".pmc"), use the following code:

         package MySecondPlugin;
         require './plugins/custom.plugin'; # contains Plugin::Custom
         use parent -norequire, 'Plugin::Custom';

HISTORY
       This module was forked from base to remove the cruft that had
       accumulated in it.

CAVEATS
ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+-----------------------+
       |ATTRIBUTE TYPE |   ATTRIBUTE VALUE     |
       +---------------+-----------------------+
       |Availability   | runtime/perl-532      |
       +---------------+-----------------------+
       |Stability      | Pass-through volatile |
       +---------------+-----------------------+

SEE ALSO
       base
       parent::versioned
           A fork of parent that provides version checking in parent class
           modules.

AUTHORS AND CONTRIBUTORS
       Rafaeel Garcia-Suarez, Bart Lateur, Max Maischein, Anno Siegel, Michael
       Schwern

MAINTAINER
       Max Maischein " corion@cpan.org "

       Copyright (c) 2007-2017 Max Maischein "<corion@cpan.org>" Based on the
       idea of "base.pm", which was introduced with Perl 5.004_04.

LICENSE
       This module is released under the same terms as Perl itself.



NOTES
       Source code for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at
       https://github.com/oracle/solaris-userland.  The original community
       source was downloaded from
       http://www.cpan.org/src/5.0/perl-5.32.0.tar.gz.

       Further information about this software can be found on the open source
       community website at https://www.perl.org/.



perl v5.32.0                      2020-06-14                         parent(3)