Newsgroup: it.comp.lang.perl
Titolo: [cgi][lungo] aiuto

devo consegnare domani questo cgi, che legge un record da un file di
testo e lo scrive su una pagina html, ma l'interprete (macPerl 5.2.0r4)
mi da questi errori :
# Useless use of a variable in void context.
File 'Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl'; Line 21
# Scalar found where operator expected, at end of line
File 'Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl'; Line 23
#       (Missing operator before ?)
# syntax error, near ")
#       {
        $whereAmI "
File 'Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl'; Line 23
# syntax error, near ") ="
File 'Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl'; Line 26
# syntax error, near "}"
File 'Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl'; Line 30
# Execution of Abusive dump !:Scuola:Sistemi:Acquisizione dati:neu
Folder:newGumi.pl aborted due to compilation errors.
visto che e' il mio primo lavoro in perl e quindi non ci capisco
granche', chi mi da una mano ?
#!/usr/bin/perl
# general purphose variables
$linelen = 24; # lenght of a line (record) in the temperature database
# HTML-ish strings
$fatal = q|<H1>Poffarbacco, c'&eacute qualche problema
!!!</H1><BR><H2>Per favore contatta il mio creativo, <A
HREF="mailto:
sen...@gardawelcome.com
">Gomi no sensei</A>...|;
$emergency = qq|<HTML><HEAD><TITLE>puf
!</TITLE></HEAD><BODY>$fatal</BODY></HTML>|;
# paths to the files needed
$path = "data/virii.frr"; # temperature database
$errlogpath = "data/errlog.frr"; #error log (not yet implemented)
$prefpath = "data/prefs.frr"; # preferences file
$intropath = "data/template.html"; # HTML file that will be displayed
$outropath = "data/intro.html";
$templatepath = "data/template.html";
$whereAmI = readline($prefspath, 0)
if ($whereAmI == 'error')
#       {
        $whereAmI = 0;
#       }
if ($mode == &readmode) = "error" # changing record
        {
        print "$emergency";
        exit();
        }
        elsif ($mode eq '0')
                {
                if (whereAmI)
                        {
                        whereAmI--;
                        }
                }
                elsif ($mode eq '1')
                        {
                        whereAmI++;
                        }
#                       elsif ($mode eq '2')
# not                   {
# yet                   # update preferences
# implemented   }
                                else
                                        {
                                        print "$emergency";
                                        exit();
                                        }
@record0 = &readrecord;
if (@record0[0] eq "")
        {
        print "$emergency";
        exit();
        }
whereAmI++;
@record1 = &readrecord;
if (@record1[0] eq "")
        {
        print "$emergency";
        exit();
        }
writepage;
sub readrecord
        {
        my (@record)
        $row = readline ($dbpath, whereAmI);
        if ($row eq 'error')
                {
                return ("");
                }
                elsif ($row eq 'eof'
                        {
                        @record = 'i record s', 'ono f', 'init', 'i'
                        return (@record);
                        }
                        else
                                {
                                @record = parserecord ($row);
                                return (@record);
                                }
        }
sub writepage
        {
        my ($page) = "";
        $page = $intro . $tab . $outro;
        print ("$page");
        }
sub writerror
        {
        my (errorcode) = @_;
        &writefile($errpath, "$errorcode\n");
        }
sub parserecord
        {
        my ($line) = @_;
        my (@record);
        @record = split (/ /, $line);
        return (@record);
        }
sub filetostring
        {
        my ($filepath) = @_;
        my (@aux, $return);
        unless (open ($filepath, "file"))
                {
                return 0;
                }
        seek (file, $where, 0);
        @aux = <file>;
        join ($return, @aux);
        return ($return);
        }
sub readline
        {
        my ($filepath, $where) = @_;
        my ($return)
        unless (open ($filepath, "file"))
                {
                return "error";
                }
        seek (file, $where*$linelenght, 0);
        if (eof)
                {
                return ('eof');
                }
        $return = <file>;
        chop $return;
        return ($return);
        }
sub writeprefs # now only a pointer to the current record
        {
        writefile ($prefspath, $whereAmI);
        return (1);
        }
sub readmode
        {
        my ($method) = $ENV{'REQUEST_METHOD'};
        my (@aux);
 
        if ($method eq "GET")
                {
                $in = $ENV{'QUERY_STRING'};
                }
                elsif ($method eq "POST")
                        {
                        read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); # read
$lenght bites from STDIN and put them in $in
                        }
                        else
                                {
                                return ("error");
                                }
        @aux = split(/=/,$in); # $in = 'mode=#' -> @aux = ('mode','#');
        return ($aux[1]);
        }
sub writefile
        {
        my ($filepath, $what) = @_;
        if (open ($filepath, ">file")
                {
                print file ("$what");
                close file;
                return (1);
                }
                else 
                        {
                        return (0);
                        }
        }

         }
  Spero che tutto questo non sia il tuo prodotto per una commessa a
pagamento... Consiglio *vivamente* un bel libro sul Perl, per esempio
"Learning Perl", di Walsh & Al., edizioni O'Reilly.
	Alla prossima,
		Marco

 cerchero' un'altra donna dentro ai sogni di Tarzan...

 Win32 accetta sia '\\' che '/'.
  Pare quasi incredibile... :)
	Alla prossima,
		Marco