NAME
relative - Load modules with relative names
VERSION
Version 0.02
SYNOPSIS
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
DESCRIPTION
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;
IMPORT OPTIONS
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 simplify the syntax, the following shortcut is also valid:
import relative -to => "Another::Hierarchy" => qw(Name ...)
Only one parameter is currently supported, to
, which can be used to indicate another hierarchy to search modules inside.
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.
AUTHOR
Sébastien Aperghis-Tramoni, <sebastien at aperghis.net>
BUGS
Please report any bugs or feature requests to bug-relative at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=relative. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc relative
You can also look for information at:
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
RT: CPAN's request tracker
Search CPAN
ACKNOWLEDGEMENTS
Thanks to Aristotle Pagaltzis, Andy Armstrong and Ken Williams for their suggestions and ideas.
COPYRIGHT & LICENSE
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.