Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re: How to export multiple packages in one file to another Perl program?

by BrowserUk (Pope)
on Oct 05, 2012 at 10:10 UTC ( #997430=note: print w/ replies, xml ) Need Help??


in reply to How to export multiple packages in one file to another Perl program?

Ignoring whether "you should be doing this"; here's one way it could be done:

The PM file:

package MyObjs; use strict; use warnings; use enum qw[ :MOError=0 One Two Three Four Five ]; sub import { my $self = shift; my $caller = caller(); for( @_ ) { if( /^:MO/ ) { no strict; no warnings; *{ "$caller\:\:MOError$_" } = *{ "MOError$_" } for qw[ One + Two Three Four Five ]; } elsif( /^:O1/ ) { no strict; no warnings; *{ "$caller\:\:O1Error$_" } = *{ "Object1\:\:O1Error$_" } +for qw[ One Two Three Four Five ]; } elsif( /^:O2/ ) { no strict; no warnings; *{ "$caller\:\:O2Error$_" } = *{ "Object2\:\:O2Error$_" } +for qw[ One Two Three Four Five ]; } else { die "Unknown export $_"; } } } package Object1; use enum qw[ :O1Error=100 One Two Three Four Five ]; package Object2; use enum qw[ :O2Error=200 One Two Three Four Five ]; 1;

And a script that imports from that:

#! perl -slw use strict; use MyObjs qw[ :MO :O1 :O2 ]; print for MOErrorOne, O1ErrorThree, O2ErrorFive; __END__ C:\test>t-MyLib.pl 0 102 204

NOTE: The use of the enum module is not germane to this working. Any subs can be exported including normal subs and those generated by constant etc.


With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.

RIP Neil Armstrong

;


Comment on Re: How to export multiple packages in one file to another Perl program?
Select or Download Code
Re^2: How to export multiple packages in one file to another Perl program?
by Wcool (Novice) on Oct 05, 2012 at 13:07 UTC
    Thanks very much. I see now that one has to great lengths to achieve this, I might as well seperate my files into different files for each...
      I see now that one has to great lengths to achieve this,

      Hm. When I compare that single import function with the guts of Exporter, I know which one I consider "great lengths".

      But if you prefer to use a module, you should consider the latter's export_to_level() function.


      With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
      Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
      "Science is about questioning the status quo. Questioning authority".
      In the absence of evidence, opinion is indistinguishable from prejudice.

      RIP Neil Armstrong

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://997430]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (15)
As of 2014-07-24 17:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (163 votes), past polls