in reply to Passing by Named Parameter

There are multiple modules on CPAN for doing this - including my own 'Class::ParmList' module, which can in fact handle what you asked above. Ex.
use Class::ParmList qw (parse_parms simple_parms); sub something { my ($file, $other) = simple_parms(['-file','-other'],@_); } sub otherthing { my $parms = parse_parms({ -parms => \@_, -legal => [qw (-textcolor -border -cellpadding)], -required => [qw (-bgcolor)], -defaults => { -bgcolor => "#ffffff", -textcolor => "#000000" } }); if (not $parms) { my $error_message = Class::ParmList->error; die ($error_message); } my ($text_color) = $parms->get('-textcolor'); }