GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
ExportTo(3) User Contributed Perl Documentation ExportTo(3)

ExportTo - export any function/method to any namespace

Version 0.03

 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.

This 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.

export_to
 # example 1 & 2
 export_to(PACKAGE_NAME => [qw/FUNCTION_NAME/]);
 ExportTo->export_to(PACKAGE_NAME => [qw/FUNCTION_NAME/]);
 
 # example 3
 ExportTo->export_to(PACKAGE_NAME => {SUBROUTINE_NAME => sub{ .... }, SUBROUTINE_NAME2 => 'FUNCTION_NAME'});
    

These are as same as following.

 # example 1 & 2
 use ExportTo(PACKAGE_NAME => [qw/FUNCTION_NAME/]);
 
 # example 3
 use ExportTo(PACKAGE_NAME => {SUBROUTINE_NAME => sub{ .... }, SUBROUTINE_NAME2 => 'FUNCTION_NAME'});
    

But, 'use' is needed to declare after declaration of function/method. using 'export_to', you can write anywhere.

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

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.

Ktat, "<ktat at cpan.org>"

Please 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.

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

    perldoc ExportTo

You can also look for information at:

  • AnnoCPAN: Annotated CPAN documentation

    <http://annocpan.org/dist/ExportTo>

  • CPAN Ratings

    <http://cpanratings.perl.org/d/ExportTo>

  • RT: CPAN's request tracker

    <http://rt.cpan.org/NoAuth/Bugs.html?Dist=ExportTo>

  • Search CPAN

    <http://search.cpan.org/dist/ExportTo>

Sub::Import. If you import other module's function to current package, it is better than ExportTo.

Copyright 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.

2009-10-11 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.