aufflick has asked for the wisdom of the Perl Monks concerning the following question:
Imagine a library of subs that are 'require'd in a bnch of files.
At the moment they are all global (ie in main::), but I want to move them to a namespace (say Util::) to avoide clashes etc.
But there's a lot of code that uses these and I don't want to have to touch every file, possibly breaking it.
So I want to define all the subs in a namespace, but for the next few months have the subs aliased to main:: as well. One at a time that's easy, but I would like to pull all the sub names from the package table and alias them all in one hit (or a loop).
I'm sure it's simple, I'm just not quite sure how to achieve it.
Update: I am thinking something like this:
but that doesn't work... I'd also like to use * globs since they would be more efficientsub foo::bar {print "bar\n";} %main:: = (%main::, %foo::); bar();
Update 2:This works:
But i'm sure it's not efficient for a lot of symbols...sub foo::bar {print "bar\n";} foreach $name (keys %foo::) { $main::{$name} = $foo::{$name}; } bar();
Back to
Seekers of Perl Wisdom