Params-Clean
view release on metacpan or search on metacpan
lib/Params/Clean.pm view on Meta::CPAN
sub import
# Handle module options: renaming exported UIDs and setting desired warnings
#
# RENAMING: pass a keyword ID followed by the new name (LIST=>"PLIST") -- setting to undef means don't export it at all
# WARNINGS: warn=>"type", or die=>"type" or fatal=>"type", or ignore=>"type"
{
my $me=shift; # our package name
my @opts, my $i; push @opts, [$_[$i++]=>$_[$i++]] while $i<@_; # pair up the options (we would use a hash, but we want to preserve order, and anyway we could have the same key repeated)
my %EXPORT=map {$_=>$_} @KEYWORDS; # keywords to be exported (normally all @KEYWORDS) in convenient hash format
my $keys=join "|", @KEYWORDS; # for regex to test for any of our keywords
my $caller=(caller)[0]; # caller's package
# Set up warning/fatal/ignoral categories
$Warn{$caller}={%{$Warn{undef}}}; # start by setting up default warning levels
for (grep $opts[$_][0]=~/^(warn|die|fatal|ignore)$/, 0..$#opts) # grep through the key-halves of each opt for exception-levels
{
my $opt=delete $opts[$_];
warning(invalid_opts qq[WARNING: Ignoring attempt to set unrecogised warning category "$opt->[1]"]) and next unless exists $Warn{$caller}{$opt->[1]}; # complain if trying to set an invalid category
$Warn{$caller}{$opt->[1]}=$opt->[0]; # set level for this caller and remove opts as we handle them
}
( run in 1.226 second using v1.01-cache-2.11-cpan-a3c8064c92c )