in reply to Values passed into a sub routine

you can also have the first parameter control whether to interpret the rest of @_ as @_ or $_[0] as a hashref, for example,
sub func { my($param1, $param2, $param3) = @_; my $tempparam1; if(ref($param1) eq "HASH") { $tempparam1 = $param1->{'param1'}; $param2 = $param1->{'param2'}; $param3 = $param1->{'param3'}; $param1 = $tempparam1; } print "param1 is $param1 param2 is $param2 param3 is $param3 \n"; } func( 'one', 'two', 'three'); func( {param1 => 'one', param2 => 'two', param3 => 'three'});
I've seen the above in Perl. Offers users TIMTOWTDI.