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"; } #### #I don't want people adding stuff like this! draw_form(logged_in_already => 'true'); #### 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"; }