Rex-Dondley-ProcessTaskArgs
view release on metacpan or search on metacpan
lib/Rex/Dondley/ProcessTaskArgs.pm view on Meta::CPAN
}
}
# check to see if passed parameters are valid
my @invalid_keys;
foreach my $key (keys %passed_params) {
my $is_valid = grep { $_ eq $key } keys %valid_keys;
if (!$is_valid) {
push @invalid_keys, $key;
}
die ("Invalid key(s): '" . join (', ', @invalid_keys) . "' from ". (caller)[1] . ', line ' . (caller)[2]) if @invalid_keys;
}
# Populate the %passed_params hash with @unkeyed_args according
# to same order they were passed to this function via @valid_args.
# Throw error if there are more args than available keys.
if (@unkeyed_args) {
my @all_array_args = @unkeyed_args;
foreach my $array_arg (@unkeyed_args) {
foreach my $vkey (@key_list) {
if (exists $passed_params{$vkey}) {
next;
}
$passed_params{$vkey} = $array_arg;
shift @all_array_args;
last;
}
}
die ('Too many array arguments passed from ' . (caller)[1] . ', line ' . (caller)[2] ) if @all_array_args;
}
# Ensure required args are present
my @reqd_keys = grep { $valid_keys{$_} } keys %valid_keys;
my @missing_keys;
foreach my $rkey(@reqd_keys) {
if (!exists $passed_params{$rkey} || $passed_params{$rkey} eq '1') {
push @missing_keys, $rkey unless $defaults{$rkey};
}
}
die ("Missing required key(s): '" . join (', ', @missing_keys) . "' from " . (caller)[1] . ', line ' . (caller)[2]) if @missing_keys;
# handle edge case when user passes key without value
foreach my $key (keys %passed_params) {
if ($passed_params{$key} && $passed_params{$key} eq '1' && $valid_keys{$key}) {
delete $passed_params{$key};
}
}
my %return_hash = (%defaults, %passed_params);
( run in 0.746 second using v1.01-cache-2.11-cpan-a3c8064c92c )