http://qs1969.pair.com?node_id=1099919


in reply to Passing variables in PSGI

Remember the comments from Manually add parameters in perl cgi? especially Re: Manually add parameters in perl cgi ( no ReadParse no CGI->Vars?
#!/usr/bin/perl -- ## ## ## ## perltidy -olq -csc -csci=3 -cscl="sub : BEGIN END " -otr -opr -ce +-nibc -i=4 -pt=0 "-nsak=*" ## perltidy -olq -csc -csci=10 -cscl="sub : BEGIN END if " -otr -opr +-ce -nibc -i=4 -pt=0 "-nsak=*" #!/usr/bin/perl -- use strict; use warnings; use CGI (); use CGI::Carp qw(warningsToBrowser fatalsToBrowser); Main( @ARGV ); exit( 0 ); sub Main { #~ return DebugCGI(); #~ return RootPage(); return ToPsgi(); } ## end sub Main sub ToPsgi { my $sub = CGI::Compile->compile( __FILE__ ); my $app = CGI::Emulate::PSGI->handler( $sub ); return $app; } ## end sub ToPsgi sub RootPage { my $q = CGI->new; print $q->header, RootTemplate( $q ); } ## end sub RootPage sub RootTemplate { my( $q ) = @_; my @keys = $q->param(); print $q->header; print "<center>"; print $q->h1( 'Some title' ); print "</center>"; print $q->start_html( -title => 'Some title' ); print $keys[0]; print SomePage(); print $q->end_form; } ## end sub RootTemplate sub SomePage { my $q = shift || CGI->new( {} ); my $ret = join "\n", "<center>", $q->h3( 'Pick an option.' ), $q->end_form, "</center>", "<center +>", $q->start_form( -name => 'some_button', -method => 'POST', -enctype => &CGI::URL_ENCODED, ), $q->submit( -name => 'click_me', -value => 'Do something', ), $q->end_form, "</center>", ; return $ret; } ## end sub SomePage sub DebugCGI { my $cgi = CGI->new; binmode STDOUT, ':encoding(UTF-8)'; $cgi->charset( 'UTF-8' ); print $cgi->header( -charset => 'UTF-8' ); print $cgi->start_html, $cgi->b( rand time, ' ', scalar gmtime ), '<table border="1" width="%100"><tr><td>', $cgi->Dump, '</td>', '<td><div style="white-space: pre-wrap; overflow: scroll;">', $cgi->escapeHTML( DD( $cgi ) ), '</div></td></tr></table>', CGI->new( \%ENV )->Dump, $cgi->end_html; } ## end sub DebugCGI sub DD { require Data::Dumper; return scalar Data::Dumper->new( \@_ )->Indent( 1 )->Useqq( 1 )->D +ump; } ## end sub DD