CGI-Ex

 view release on metacpan or  search on metacpan

lib/CGI/Ex/App.pod  view on Meta::CPAN

    use base qw(CGI::Ex::App);

    __PACKAGE__->navigate;

    sub template_path { '/var/www/templates' }

    sub main_hash_swap { {date => sub { scalar localtime }} }

    sub main_hash_fill {
        return {
            guess => 50,
        };
    }

    sub main_hash_validation {
        return {
            guess => {
                required => 1,
                compare1       => '<= 100',
                compare1_error => 'Please enter a value less than 101',
                compare2       => '>  0',
                compare2_error => 'Please enter a value greater than 0',
            },
        };
    }

    sub main_finalize {
        my $self   = shift;
        my $form   = $self->form;

        $self->add_to_form({was_correct => ($form->{'guess'} == 23)});

        return 0; # indicate to show the page without trying to move along
    }


    -------- File: /var/www/templates/my_cgi/main.html --------

    <h2>Hello World! ([% date %])</h2>

    [% IF was_correct %]
       <b>Correct!</b> - The number was [% guess %].<br>
    [% ELSIF guess %]
       <b>Incorrect</b> - The number was not [% guess %].<br>
    [% END %]

    <form name="[% form_name %]" method="post">

    Enter a number between 1 and 100: <input type="text" name="guess"><br>
    <span id="guess_error" style="color:red">[% guess_error %]</span><br>

    <input type="submit">
    </form>

    [% js_validation %]


There are infinite possibilities.  There is a longer "SYNOPSIS" after
the process flow discussion and more examples near the end of this
document.  It is interesting to note that there have been no databases

lib/CGI/Ex/Conf.pm  view on Meta::CPAN


If the first argument is a perl data structure, it will be
copied one level deep and returned (nested structures will contain the
same references).  A yaml string will be parsed and returned.  A full
filename will be read using the appropriate handler and returned (a
file beginning with a / or ./ or ../ is considered to be a full
filename).  A file "namespace" (ie "footer" or "my::config" or
"what/ever") will be turned into a filename by looking for that
namespace in the paths found either in $args->{paths} or in
$self->{paths} or in @DEFAULT_PATHS.  @DEFAULT_PATHS is empty by
default as is $self->{paths} - read makes no attempt to guess what
directories to look in.  If the namespace has no extension the
extension listed in $args->{default_ext} or $self->{default_ext} or
$DEFAULT_EXT will be used).

  my $ref = $cob->read('My::NameSpace', {
    paths => [qw(/tmp /usr/data)],
    default_ext => 'pl',
  });
  # would look first for /tmp/My/NameSpace.pl
  # and then /usr/data/My/NameSpace.pl



( run in 2.252 seconds using v1.01-cache-2.11-cpan-748bfb374f4 )