Don't know if there's a "better" way (for whatever definition of "better"), but it seems a pretty good method to me.
To get your example to work, i had to add a comma between the hashref and the export list; and, of course, define dummy versions of your missing %EXPORT_TAGS and frobnicate().
use My::Mod qw(:core frobnicate), { hairiness => 2 }; frobnicate( arg1 => 'val1' ); # with hairiness => 2
package My::Mod; use parent qw(Exporter); our @EXPORT_OK = qw(frobnicate); our %EXPORT_TAGS = (core => []); sub import { # or do it via a foreach and extra @args array my %setup = map { %$_ } grep { ref $_ eq 'HASH' } @_; @_ = grep { ref $_ ne 'HASH' } @_; $_[0]->per_package_setup( scalar caller, %setup ); goto \&Exporter::import; }; use Data::Dumper; sub per_package_setup { my ($self, $target, %options) = @_; # setup for target print STDERR "$self->per_package_setup($target, VAR1):\n"; print STDERR Dumper \%options; %self::OPTS = %options; }; sub frobnicate { print map { "frobnicate($_)\n"} @_; printf "{ %-20s => %s }\n", $_, $self::OPTS{$_} foreach sort keys +%self::OPTS; } 1;
In reply to Re: Mixing configuration options and exports in 'use' statement
by pryrt
in thread Mixing configuration options and exports in 'use' statement
by Dallaylaen
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |