However, the
func({ key1 => 'value1', key2 => 'etc', });
invocation style for named arguments has a benefit I consider very valuable: if an invocation is malformed, a warning is issued at the point of invocation.
In the alternate, arguably cleaner, invocation style that does not use an anonymous hash, the warning is issued at a point within the called function, so the question immediately becomes "Where was this function invoked, so I can go there and fix the improperly specified arguments".
Output:use warnings; use strict; func_1({ one => 'uno', two => 'dos', three => }); # <-- line 38 func_2(one => 'uno', two => 'dos', three => ); sub func_1 { my %args = %{ $_[0] }; print "func_1: one translates to $args{one} \n"; } sub func_2 { my %args = @_; # <-- line 48 print "func_2: one translates to $args{one} \n"; }
>perl 765727_1.pl Odd number of elements in anonymous hash at 765727_1.pl line 38. func_1: one translates to uno Odd number of elements in hash assignment at 765727_1.pl line 48. func_2: one translates to uno
In reply to Re: Preferred technique for named subroutine parameters?
by AnomalousMonk
in thread Preferred technique for named subroutine parameters?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |