I second the vote for CGI::Prototype. I'd also suggest looking at CGI::Ex::App. It lets you choose if you want some run modes handled by other classes, or handled by locally.
#!/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;
#}
my @a=qw(random brilliant braindead); print $a[rand(@a)];
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|