jck has asked for the wisdom of the Perl Monks concerning the following question:

Is there a quick way to clear the parameters that get passed from a CGI form? i tried:
my $q = new CGI; my %in = map { $_ => $q->param($_) } $q->param; for (keys %in) { $_ = ""; }
but that's clearly not working. any ideas? (i realize there's probably a simple and elegant solution - i just can't think of it!). thanks in advance.

Replies are listed 'Best First'.
Re: Clearing parameters
by Thelonius (Priest) on May 12, 2004 at 20:16 UTC
    From the documentation:
    $query->delete_all();
    This clears the CGI object completely. It might be useful to ensure that all the defaults are taken when you create a fill-out form.

    Use Delete_all() instead if you are using the function call interface.

      Thank you so much - i thought i'd read the CGI documentation completely, but missed that, obviously. Thanks for being so polite about my stupidity!!
Re: Clearing parameters
by dragonchild (Archbishop) on May 12, 2004 at 19:54 UTC
    Uhh ... it's not working cause you're not doing anything.
    my $q = new CGI; $q->param( $_ => undef ) for $q->param;

    Of course, I'm assuming you want to clear the parameters in the CGI object. You were clearing the values as copied in from the CGI object.

    ------
    We are the carpenters and bricklayers of the Information Age.

    Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

    I shouldn't have to say this, but any code, unless otherwise stated, is untested

      sorry, i knew that question may have been a little cryptic. i have a script that is calling itself repeatedly, and every time, it's accumulating name-value parameter pairs (which is really not the ultimate goal, but i figure i'll clean up later). while i'm debugging, it would be great to have a button that would "erase" everything that's accumulated.

      so i tried the following in place of what i had before, and i'm still getting a bunch of parameters passed:

      my $q = new CGI; $q->param( $_ => undef ) for $q->param;
      i know i could write it out with a for-loop, but it seems there ought to be a cleaner way to do it.