Un esempio: libreria online
Prendiamo ad esempio una piccola applicazione scritta in perl per una libreria online. Le uniche funzionalità implementate sono la ricerca e la scelta del colore di sfondo.
#!/usr/bin/perl -w use strict; use lib '../lib'; use CGI; use Parse::ePerl; use StandardSession; #---------------------------------------- # Carichiamo il database dei libri #---------------------------------------- my $libri = `cat libri.dat`; my @libro = map { [ split /\|/, $_ ] } split /\n/, $libri; #---------------------------------------- # Creiamo oggetto cgi e sessione in base alla richiesta #---------------------------------------- my $cgi = CGI -> new; my $session = StandardSession -> fromCgi ( $cgi ); if ( my $author = $cgi -> param ( 'author' ) ) { #---------------------------------------- # Effettuiamo la ricerca e inseriamo i risultati in sessione #---------------------------------------- @main::result = grep { $_ -> [ 0 ] =~ m/$author/i } @libro; $session -> set ( 'result', \@main::result ); $main::start = 0; } elsif ( defined ( $main::start = $cgi -> param ( 'start' ) ) ) { #---------------------------------------- # Recuperiamo i risultati dalla sessione #---------------------------------------- @main::result = @{ $session -> get ( 'result' ) }; } #---------------------------------------- # Carichiamo il template eperl a seconda del risultato #---------------------------------------- my $template = @main::result ? `cat templates/results.html` : `cat templates/search.html`; #---------------------------------------- # Elaboriamo il template #---------------------------------------- my $html; my $error; Parse::ePerl::Expand( { Script => $template, Result => \$html, Error => \$error } ); print STDERR $error if $error; #---------------------------------------- # Aggiungiamo i parametri nell'HTML se la sessione usa i parametri #---------------------------------------- $html = $session -> processHtml ( $html ) if $session -> needsParameter; #---------------------------------------- # Inviamo l'output al client # Se la sessione usa i cookie inseriamo il cookie nell'header #---------------------------------------- if ( $session -> needsCookie ) { print CGI -> header ( -cookie => $session -> cookie ); } else { print CGI -> header; } print $html;