http://qs321.pair.com?node_id=140903

I finished a CGI script yesterday that did some fiddly things with various environment variables, and carried various settings in hidden form fields. It became a hassle to print out the various values of things from time to time, so in the end I just used the following snippet to dump (or not) the values of the environment and the CGI post parameters.

Just flip from 0 to 1 when you need to display the contents to figure out what's what.


merlyn is quite right. I have successfully reinvented the Dump method. Having played with both now, all I can say in my defense is that the output from this snippet is more compact.

# assuming my $q = new CGI; 0 and print $q->ul( $q->li( [ map { "env $_ => $ENV{$_}" } sort keys % +ENV ] )); 1 and print $q->ul( $q->li( [ map { "param $_ => @{[$q->param($_)]}" } + sort $q->param() ] )); 2 and print $q->Dump; # RTFM

Replies are listed 'Best First'.
Re: Debugging the CGI environment
by merlyn (Sage) on Jan 23, 2002 at 20:07 UTC
    Check out CGI's Dump method, already in there!
    DUMPING OUT ALL THE NAME/VALUE PAIRS The Dump() method produces a string consisting of all the query's name/value pairs formatted nicely as a nested list. This is useful for debugging purposes: print $query->Dump Produces something that looks like: <UL> <LI>name1 <UL> <LI>value1 <LI>value2 </UL> <LI>name2 <UL> <LI>value1 </UL> </UL> As a shortcut, you can interpolate the entire CGI object into a string and it will be replaced with the a nice HTML dump shown above: $query=new CGI; print "<H2>Current Values</H2> $query\n";

    Also, beware! You should HTML-entitize your output, or not use text/html, when you do this.

    -- Randal L. Schwartz, Perl hacker