Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re: How to alias a whole namespace to another namespace (in this case main::)

by ikegami (Pope)
on Nov 15, 2004 at 05:56 UTC ( #407778=note: print w/replies, xml ) Need Help??


in reply to How to alias a whole namespace to another namespace (in this case main::)

This might help.

use strict; use warnings; package PACKAGEA::PACKAGEB; our @test = qw(a b c); our $test = 'def'; our %tset = ('foo' => 'bar'); *PI = \'3.14'; our $PI; print(@test, $/); print($test, $/); print(%tset, $/); print($PI, $/); package main;
my $src_pkg_name = 'PACKAGEA::PACKAGEB'; my $dst_pkg_name = __PACKAGE__; { no strict 'refs'; foreach (keys(%$src_pkg_name)) { my $sym_name = $_; my $src_sym_ref = "$src_pkg_name::$sym_name"; my $dst_sym_ref = "$dst_pkg_name::$sym_name"; my $ref; $ref = *$src_sym_ref{SCALAR}; *$dst_sym_ref = $ref if $ref; $ref = *$src_sym_ref{ARRAY }; *$dst_sym_ref = $ref if $ref; $ref = *$src_sym_ref{HASH }; *$dst_sym_ref = $ref if $ref; $ref = *$src_sym_ref{CODE }; *$dst_sym_ref = $ref if $ref; } }
print(@test, $/); print($test, $/); print(%tset, $/); print($PI, $/);

Update: Oops! I had forgotten to test whether this imports functions -- which would be the most important here!! -- and it doesn't. I'm not sure how to fix ,and I can't look further into it at his moment.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2021-10-27 17:47 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    My first memorable Perl project was:







    Results (94 votes). Check out past polls.

    Notices?