in reply to Perl Idioms Explained - my ($foo, $bar) = @{shift(@_)}{qw/ -foo -bar /}
That's nice for a short parameter list, but it could get bluky for large lists (like the HTML::Template constructor). I prefer something like this:
{ my @PARAMS = qw( foo bar baz ); sub new { my $class = shift; my $in = shift; my $self = { map { $_ => $in->{$_} || '' } @PARAMS }; bless $self, $class; } }
The above is more self-documenting, because all the parameters taken are listed above the subroutine and can be easily broken into multiple lines. It also doesn't mix the parameter definitions with other code.
----
: () { :|:& };:
Note: All code is untested, unless otherwise stated
In Section
Meditations