in reply to Passing named parameters

Access your argument in the subroutine like this:
#!/usr/bin/perl -w use strict; sub do_this_cool_function { my %args = ( -retire => "never", -pizza => "cheese", -payscale => 0, -beer => "guiness", @_, # argument pair list goes here ); print "I wanna retire $args{-retire} if my pizza is $args{-pizza}. +\n"; } do_this_cool_function(-retire=>'early', -payscale=>-55.00, -pizza=>'co +ld', -beer=>'none');
i don't get your error by the way. the only error your function call gives, is the following, because you didn't quote 'none':
Bareword "none" not allowed while "strict subs" in use at ./test.pl li +ne 17. Unquoted string "none" may clash with future reserved word at ./test.p +l line 17. Execution of ./test.pl aborted due to compilation errors.