in reply to use Very::Long::Module::Name as Foo;
The problem with a source filter approach is that it can very easily run over program data or conflict with existing filters. Personally, I would've thought a straight-forward import approach would've been easiest e.g
This doesn't work as globally as your filtering mechanism, but it also follows in the footsteps of Exporter of allowing the user to simply inherit the module to enable aliasing (which may not always be desirable, like the ability to export random methods). Also, the reason I stuck with the aliasing route is that it is much cleaner than simply using @ISA. It means that objects are blessed into the original package and not the inherited alias, which will keep any introspection consistent, saves avoids dispatching every method call, and it really is an alias as opposed to a quick work-around.package allow_as; use Carp 'croak'; sub import { my($pkg, %args) = @_; return unless exists $args{as} and length $args{as}; croak "Symbol table '$args{as}' already exists" if defined *{"$args{as}\::"}; *{"$args{as}\::"} = *{"$pkg\::"}; } 1; =pod =head1 USAGE package Your::Very::Long::Name::Here; use base 'allow_as'; sub import { ## perhaps you want your own import code? $_[0]->SUPER::import(@_[1 .. $#_]); } ## later use Your::Very::Long::Name::Here ( as => 'yvlnh', other => [qw/user parameters perhaps?/], ); =cut
HTH
_________
broquaint
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: use Very::Long::Module::Name as Foo;
by demerphq (Chancellor) on Oct 14, 2003 at 14:53 UTC | |
by broquaint (Abbot) on Oct 14, 2003 at 15:29 UTC |
In Section
Meditations