|
NAMEExportTo - export any function/method to any namespace VERSIONVersion 0.03 SYNOPSIS package From;
sub function_1{
# ...
}
sub function_2{
# ...
}
sub function_3{
# ...
}
use ExportTo (NameSpace1 => [qw/function_1 function_2/], NameSpace2 => [qw/function_3/]);
# Now, function_1 and function_2 are exported to 'NameSpace1' namespace.
# function_3 is exported to 'NameSpace2' namespace.
# If 'NameSpace1'/'NameSpace2' namespace has same name function/method,
# such a function/method is not exported and ExportTo croaks.
# but if you want to override, you can do it as following.
use ExportTo (NameSpace1 => [qw/+function_1 function_2/]);
# if adding + to function/method name,
# This override function/method which namespace already has with exported function/method.
use ExportTo ('+NameSpace' => [qw/function_1 function_2/]);
# if you add + to namespace name, all functions are exported even if namespace already has function/method.
use ExportTo ('+NameSpace' => {function_ => sub{print 1}, function_2 => 'function_2'});
# if using hashref instead of arrayref, its key is regarded as subroutine name and
# value is regarded as its coderef/subroutine name. and this subroutine name will be exported.
DESCRIPTIONThis module allow you to export/override subroutine/method to one namespace. It can be used for mix-in, for extension of modules not using inheritance. FUNCTION/METHOD
Export from another package to another package (with renaming).This is used in Util::Any. For example, CGI::Util's "escape" function to other package. package main;
use CGI ();
# export CGI::Util::escape to OtherA
use ExportTo (OtherA => ['CGI::Util::escape']);
# export CGI::Util::escape to OtherB as cgi_escape
use ExportTo (OtherB => {cgi_escape => \&CGI::Util::escape});
print OtherA::escape("/"); # %2F
print OtherB::cgi_escape("/"); # %2F
Import from another package's subroutine to current package (with renaming)It is as same as above. use CGI ();
# export CGI::Util::escape to current package
use ExportTo (__PACKAGE__, ['CGI::Util::escape']);
# export CGI::Util::escape to current package as cgi_escape
use ExportTo (__PACKAGE__, {cgi_escape => \&CGI::Util::escape});
print main::escape("/"); # %2F
print main::cgi_escape("/"); # %2F
But for this purpose, Sub::Import has better interface. AUTHORKtat, "<ktat at cpan.org>" BUGSPlease report any bugs or feature requests to "bug-exportto at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=ExportTo>. 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 ExportTo You can also look for information at:
SEE ALSOSub::Import. If you import other module's function to current package, it is better than ExportTo. COPYRIGHT & LICENSECopyright 2006-2009 Ktat, all rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
|