|
NAMErelative - Load modules with relative names VERSIONVersion 0.04 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
DESCRIPTIONThis 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 OPTIONSImport 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. AUTHORSébastien Aperghis-Tramoni, "<sebastien at aperghis.net>" BUGSPlease 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. SUPPORTYou can find documentation for this module with the perldoc command. perldoc relative You can also look for information at:
ACKNOWLEDGEMENTSThanks to Aristotle Pagaltzis, Andy Armstrong, Ken Williams and Curtis Poe for their suggestions and ideas. COPYRIGHT & LICENSECopyright 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.
|