in reply to How to process named parameters that have the same key name?
"P.S. I don't want to do: insect => ['ant', 'spider']"
Depends on the specification. If duplication is not allowed, in which case, if there is duplication, we can just take the last one. Just like you said, the following code would be fine:
use Data::Dumper; use strict; use warnings; foo( animal => 'monkey', fish => 'tuna', insect => 'ant', insect => 'spider' ); sub foo { my %params = @_; print Dumper(\%params); }
Which gives:
$VAR1 = { 'insect' => 'spider', 'animal' => 'monkey', 'fish' => 'tuna' };
If duplication is allowed, then you are forced to use insect => ['ant', 'spider'], or something similar to represent this. Logically you cannot avoid this. saintmike has the code already. Whether you create this structure inside or outside the function/method, really doesn't matter, all depend on which way is easier for you, and probably make the code more reusable.
|
|---|