waxmop has asked for the wisdom of the Perl Monks concerning the following question:
This subroutine allows the user to override some default values by using named params:
sub draw_form { my %args = ( 'buttons' => [], 'action' => 'parse.cgi', @_ ); while ( my($k, $v) = each(%args) ) { if ( ref($v) eq 'ARRAY' ) { $v = "@$v"; } print "$k: $v.\n"; } print "---\n"; }
That works well enough. But I'm worried about potentially harmful stuff happening like this:
#I don't want people adding stuff like this! draw_form(logged_in_already => 'true');
So, I can improve the draw_form subroutine like so:
sub safer_draw_form { my %args = (@_); my @buttons = (); if ( $args{'buttons'} ) { push @buttons, @{$args{'buttons'}}; } my $action = 'parse.cgi'; $action = $args{'action'} if $args{'action'}; print "action: $action.\n"; print "buttons: @buttons.\n"; print "---\n"; }
However, as the list of params increases, all that handling at the beginning is going to get clunkier and clunkier. I hope the community can help me smooth this code out.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Help me improve this sub with named params!
by perrin (Chancellor) on Aug 29, 2003 at 21:40 UTC | |
Re: Help me improve this sub with named params!
by blokhead (Monsignor) on Aug 30, 2003 at 03:56 UTC | |
by BUU (Prior) on Aug 30, 2003 at 04:13 UTC | |
by blokhead (Monsignor) on Aug 30, 2003 at 05:36 UTC | |
Re: Help me improve this sub with named params!
by Abigail-II (Bishop) on Aug 29, 2003 at 20:50 UTC |
Back to
Seekers of Perl Wisdom