note
Rhandom
I second the vote for [cpan://CGI::Prototype]. I'd also suggest looking at [cpan://CGI::Ex::App]. It lets you choose if you want some run modes handled by other classes, or handled by locally.
<br><br>
<code>
#!/usr/bin/perl
package Foo;
use strict;
use warnings;
use base qw(CGI::Ex::App);
Foo->new->navigate;
exit;
sub base_dir_abs { '/var/www/templates' }
### tell the application to
### look for a module to handle each run mode (step)
sub allow_morph { 1 }
{
# This could be in its own file - or
# embedded in here is fine
# you can get here by going to
# /cgi-bin/my_cgi
# or /cgi-bin/my_cgi/main
# or /cgi-bin/my_cgi?step=main
package Foo::Main;
sub file_print {
return \ <<'HERE';
<h1>Step Main</h1>
This is the default run mode.
You said [% hello %].
HERE
sub hash_swap {
return {hello => "I'm main!"};
}
} # end of Foo::Main
# you get to step2 by calling
# /cgi-bin/my_cgi?step=step2
# or
# /cgi-bin/my_cgi/step2
# these methods are just sitting the the Foo class
sub step2_file_print {
return \ <<'HERE';
<h1>I'm in step 2</h1>
You said [% hello %].
HERE
sub step2_hash_swap {
return {hello => 'Hello Step2'};
}
# uncomment for a trace of which methods were looked for
# sub post_navigate {
# use CGI::Ex::Dump qw(debug);
# debug shift->dump_history;
#}
</code>
<br><br>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-1598">
<font size=1>my @a=qw(random brilliant braindead); print $a[rand(@a)];</font>
</div></div>
612534
612565