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.
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.