there are few if any projects that are not improved by a global s/our/my/.
You can easily support use My::Configuration qw( %prod );. Although the basic Exporter.pm doesn't support exporting of lexicals, it is dead easy to support that yourself and I strongly suspect that at least one of the "better exporter than Exporter" modules on CPAN is already written to allow you to export lexicals as well.
But just to prove how easy it is, if you only have one variable to potentially export, I roll my own exporter as you watch:
package My::Config; use strict; my %prod = ( foo => 'bar' ); my %export= ( '%prod' => \%prod ); sub import { my ( $me, @syms )= @_; my $caller= caller(); for my $sym ( @syms ) { my $ref = $export{$sym}; if ( ! $ref ) { require Carp; Carp::croak( __PACKAGE__, " does not export $sym\n" ); } $sym =~ s/^[\$\@\%]//; no strict 'refs'; *{ $caller.'::'.$sym }= $ref; } }
Heh, that one isn't even limited to just exporting one variable (it doesn't support exporting groups of symbols yadda, of course).
- tye
In reply to Re: Abandon "our" declarations (was: Re: our scope and packages) (export)
by tye
in thread our scope and packages
by jfrm
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |