Newsgroup: it.comp.lang.perl
Titolo: Salvare stringhe in un file

Salve a tutti, devo riuscire a salvare le parole cercate nel sito in un
file. Ovviamente non so nulla o quasi di Perl, ma so che deriva dalla bash
percio' da buon utilizzatore di Linux ho pensato di apportare una aggiunta
allo script sottostante ma non funziona; qualcuno puo' darmi la sintassi
esatta o spiegarmi perche' non funziona?
Grazie anticipate
#!/usr/bin/perl
#################################################################
# DO NOT EDIT THIS FILE - SEE README.TXT FOR SETUP INSTRUCTIONS #
#################################################################
print "Content-type: text/html\n\n";
$len  = $ENV{'CONTENT_LENGTH'};
if ($ENV{'REQUEST_METHOD'} eq "POST") {
   read(STDIN, $query, $len);
} else {
   $query = $ENV{'QUERY_STRING'};
}
for (split(/\&/, $query)) {
   next if (!$_);
   tr/+/ /;
   s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   s/\r//g;
   ($a, $b) = split(/=/);
   $FORM{$a} = $b;
}
open (FILE, "searchindex.dat") or &medie ("Can't open searchindex.dat -
reason: $!");
@index = <FILE>;
close (FILE);
$searchwords = $FORM{'Q'};
# RIGA AGGIUNTA DA ME: grep $searchwords > ricerche.txt;
$searchwords =~
s/[\|\\\/\!\@\#\$\%\^\&\*\(\)\[\]\{\}\;\:\'\"\+\=\-\_\?\.\,]//isg;
if (!$FORM{'X'}) {
   $searchwords =~ s/\s+/\|/sg;
}
for ($i = 0; $i < @index; $i++) {
   next if (!$index[$i]);
   $ok = 0;
   ($URL, $title, $description, $keywords) = split (/\|\%\%\|/, $index[$i]);
   if ($searchwords) {
      if ($FORM{'E'}) {
         $ok = 1 if ($keywords =~ /\b(?:$searchwords)\b/i);
      }
      $ok = 1 if ($title =~ /\b(?:$searchwords)\b/i);
   }
   if ($ok) {
      $found++;
      if (($FORM{'S'} < $found) and ($found <= $FORM{'S'} + 10)) {
         $description =~ s/\b($searchwords)\b/<b>$1<\/b>/isg;
         $title =~ s/\b($searchwords)\b/<b>$1<\/b>/isg;
         $result .= "<b>$found</b> - <a href=\"$URL\">$title</a> -
$description\n<br><br>\n";
      }
   }
   if ($found == $FORM{'S'} + 11) {
      $next = $FORM{'S'} + 10;
      $found--;
      last;
   }
}
$start = $FORM{'S'} + 1;
if (!$found) {
   $result = "Nessun risultato.\n<br><br>\n";
} else {
   $result = "Risultati da $start a $found\n<br><br>\n$result";
}
if ($FORM{'S'}) {
   $prev = $FORM{'S'} - 10;
   $prev = 0 if ($prev < 0);
   $link = qq(<a
href="search.cgi?Q=$FORM{'Q'}&E=$FORM{'E'}&X=$FORM{'X'}&S=$prev">&lt; &lt;
Precedenti</a>);
}
$link .= " | " if (($FORM{'S'}) and ($next));
$link .= qq(<a
href="search.cgi?Q=$FORM{'Q'}&E=$FORM{'E'}&X=$FORM{'X'}&S=$next">Prossimi
&gt; &gt;</a>\n) if ($next);
open (TEMP, "results.html") or &medie ("Can't open results.html - reason:
$!");
$template = join ('', <TEMP>);
close (TEMP);
$copy = qq(\n\n);
$template =~ s#<!-- KEYWORDS -->#$FORM{'Q'}#sg;
$template =~ s#<!-- RESULTS -->#$result$copy#sg;
$template =~ s#<!-- LINK -->#$link#sg;
print "$template";
sub medie {
my $message = shift;
print <<DEATH;
<html>
<head>
<title>Script Error</title>
</head>
<body>
<ul><b>Script Error</b>
<br><br>
$message
<br><br>
Make sure the required files are in the same directory as this script and
are accessible by
the script.
</ul>
</body>
</html>
DEATH
}
exit 1;

Ma perchè invece di fare in quel modo non utilizzi il seguente modo?
open (FILE, ">>ricerche.txt") || or die .........;
    print FILE "$VARIABILE_CHE_VUOI";
close FILE;
Ciao
Marco /*-*\
"robbyt" <rob...@NOSPAMworldonline.it> ha scritto nel messaggio
news:a0seun$hsm$1...@pegasus.tiscalinet.it...


 Ma perchè invece di fare in quel modo non utilizzi il seguente modo?
Perche' se non me lo dicevi tu non ci sarei mai arrivato :-)
Ho ottenuto cio' che volevo grazie.