I like this idea, but it has the major drawback that a hash dosen't preserve order, and in this case the order of application of those REs is important.
I don't know of any elegant solution to this (I'm using mostly the same method when creating multi-page CGI scripts), so the thing I'm using is a hash of page handlers and an array as the sequence of pages (yes, it's the dreaded wizard-style interface). Pages (== hash keys) that are not found in the sequence array are then either flagged as an error (more stability) or silently appended to the end of the wizard (quick'n'dirty development).
A sample :
my @pageorder = ( "welcome", "address", "recipients", "preview", "done
+" );
# Routines to create the pages
my %pages = (
"welcome" => \&page_welcome,
"address" => \&page_address,
"recipients" => \&page_recipients,
"preview" => \&page_preview,
"done" => \&page_done,
);
# Routines to validate user input for every page
my %validators = (
"welcome" => undef,
"address" => \&validate_address,
"recipients" => \&validate_recipients,
"preview" => undef,
"done" => undef,
);
And the page handler works like this :
# First, determine where we are, using a default of "welcome" on error
+ :
my $page;
if ($cgi->param("go_prev") and $cgi->param("prevpage")) {
$page = $cgi->param("prevpage");
} else {
$page = $cgi->param("nextpage");
};
if (! exists $pages{$page}) {
$page = "welcome";
};
# Parameter validation ommitted, as it's simply a walk of the validati
+on chain for every page ...
# Execute the special code for this page, so all this searching had so
+me sense :
&{$pages{$page}};
In reply to Re: Re: CRSC
by Corion
in thread CRSC
by azatoth
-
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.