#!/usr/bin/perl #require "cgi-lib.pl"; # La directory con i dati $dati = "../dati"; # La copertina di default nel caso che non sia ancora stata scannata $default = "default.gif"; # I templates html per la pagina con l'elenco e quella della scheda $LStemplate = "./lista.html"; $SCtemplate = "./scheda.html"; $NFtemplate = "./notfound.html"; $ELtemplate = "./emptylist.html"; if ($libro = $ENV{'PATH_INFO'}) { $libro =~ s/^\///; $libro =~ s/\W/\?/g; } # Stiamo editando un libro esistente o nuovo if ($libro =~ /^libro_\d{3}$/ && -f "$dati/$libro") { @dsc = `cat $dati/$libro`; $parm = $note; foreach $line (@dsc) { if ($line =~ /(^\w+):(.*)/) { if (defined($inul)) { ${$parm} .= "\n\n"; undef $inul; } ($parm,$line) = ($1,$2); } $line =~ s/\\n/
/; if ($line =~ /^-/) { $line =~ s/^-\s*//; $line = "\n
  • $line"; $line = "\n\n$line" if defined $inul; undef $inul; } ${$parm} .= " $line"; } pushpage (`cat $SCtemplate`); } # Stiamo visualizzando la lista, oppure abbiamo cercato un libro che non esiste else { @libri = grep (/libro_\d{3}\n*$/,`ls $dati`) or pushpage (`cat $ELtemplate`); foreach $book (@libri) { chop $book; @dsc = `cat $dati/$book`; foreach $key ('autore','editore','titolo') { ($val) = grep (/^$key:/,@dsc); $val =~ s/^$key://; chop $val if $val =~ /\n$/; ${$key}{$book} = $val; } } if (!$libro) { pushpage (`cat $LStemplate`) } else { pushpage (`cat $NFtemplate`) } } sub pushpage { my @page = @_; # print "Expires: 0\n"; print "Content-type: text/html\n\n"; foreach $line (@page) { chop $line; if ($line =~ s/^{loop}//) { while (($book,$autore) = each %autore) { $editore = $editore{$book}; $titolo = $titolo{$book}; $newline = $line; $newline =~ s/_LIBRO_/$book/g; $newline =~ s/_AUTORE_/$autore/g; $newline =~ s/_TITOLO_/$titolo/g; $newline =~ s/_EDITORE_/$editore/g; print "$newline\n"; } } elsif ($line =~ /_.+_/) { $line =~ s/_LIBRO_/$libro/g; $line =~ s/_TITOLO_/$titolo/g; $line =~ s/_SOTTOTITOLO_/$sottotitolo/g; $line =~ s/_AUTORE_/$autore/g; $line =~ s/_EDITORE_/$editore/g; $line =~ s/_NOTE_/$note/g; $line =~ s/_PAGINE_/$pagine/g; $line =~ s/_PREZZO_/$prezzo/g; $line =~ s/_DESCRIZIONE_/$descrizione/g; print "$line\n"; } else { print "$line\n" } } exit; }