View on
MetaCPAN is shutting down
For details read Perl NOC. After June 25th this page will redirect to
Sébastien Aperghis-Tramoni > relative-0.04 > relative



Annotate this POD

View/Report Bugs
Module Version: 0.04   Source  


relative - Load modules with relative names


Version 0.04


    package BigApp::Report;

    use relative qw(Create Publish);
    # loads BigApp::Report::Create, BigApp::Report::Publish

    use relative qw(..::Utils);
    # loads BigApp::Utils

    use relative -to => "Enterprise::Framework" => qw(Base Factory);
    # loads Enterprise::Framework::Base, Enterprise::Framework::Factory


This module allows you to load modules using only parts of their name, relatively to the current module or to a given module. Module names are by default searched below the current module, but can be searched upper in the hierarchy using the ..:: syntax.

In order to further loosen the namespace coupling, import returns the full names of the loaded modules, making object-oriented code easier to write:

    use relative;

    my ($Maker, $Publisher) = import relative qw(Create Publish);
    my $report    = $Maker->new;
    my $publisher = $Publisher->new;

    my ($Base, $Factory) = import relative -to => "Enterprise::Framework"
                                => qw(Base Factory);
    my $thing = $Factory->new;

This can also be written using aliases:

    use relative -aliased => qw(Create Publish);
    my $report    = Create->new;
    my $publisher = Publisher->new;

    use relative -to => "Enterprise::Framework", -aliased => qw(Base Factory);
    my $thing = Factory->new;


Import options can be given as an hashref or an arrayref as the first argument:

    # options as a hashref
    import relative { param => value, ... },  qw(Name ...);

    # options as an arrayref
    import relative [ param => value, ... ],  qw(Name ...);

In order to simplyfing syntax, options can also be given as dash-prefixed params:

    import relative -param => value, qw(name ...);

Available options:

import will die as soon as a module can't be loaded.

import returns the full names of the loaded modules when called in list context, or the last one when called in scalar context.


Sébastien Aperghis-Tramoni, <sebastien at>


Please report any bugs or feature requests to bug-relative at, or through the web interface at I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.


You can find documentation for this module with the perldoc command.

    perldoc relative

You can also look for information at:


Thanks to Aristotle Pagaltzis, Andy Armstrong, Ken Williams and Curtis Poe for their suggestions and ideas.


Copyright 2007 Sébastien Aperghis-Tramoni, all rights reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

syntax highlighting: