#!/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;