I think the only real problem that you might encounter is copying the actual formats about. The problem is that there's no way of directly copying them unlike the other data types e.g
format foo =
.
{
package mypkg;
*form_foo = *main::foo;
*form_ref = *form_foo{FORMAT};
}
use Devel::Peek;
Dump(*main::foo);
Dump(*mypkg::form_foo);
Dump(*mypkg::form_ref);
__output__
SV = PVGV(0x80f9c78) at 0x8100de8
...
FORM = 0x80fd4e4
SV = PVGV(0x80f9dc0) at 0x8100e24
...
FORM = 0x80fd4e4
SV = PVGV(0x8101820) at 0x8100e3c
...
FORM = 0x0
So you'll have to end up exporting entire globs into the given packages, which isn't ideal.
HTH
_________
broquaint
update: changed FORM to FORMAT