Newsgroup: it.comp.lang.perl
Titolo: un aiuto please!

Un saluto a tutti gli utenti del ng.
Sono conscio che probabilmente i fruitori di questo ng hanno molto di
meglio da fare che esaudire le mie richieste, ma nonostante ciò provo ad
inginocchiarmi chiedendo di risolvere questo mio piccolo problema:
il server che ospita un (mio) sito supporta solo il perl (niente php, asp
od altro e soprattutto niente mysql che sarebbe tornato utile). Ho la
necessità di creare un piccolo script che mi permetta di prendere l'input
di un form di pochi campi e lo metta in un file di testo (non avendo altre
alternative). Un successivo script (in una pagina ad accesso ristretto)
dovrebbe permettermi successivamente di visualizzare il contenuto del
suddetto file di testo ed eventualmente cancellare le singole righe.
Tutto qui. Mi hanno detto che con perl è abbastanza facile fare tutto ciò.
Il problema è che io non so usarlo.
Qualcuno può darmi una mano?
La mia sempiterna riconoscenza giunga anticipatamente a chiunque vorrà
rispondermi.

 suddetto file di testo ed eventualmente cancellare le singole righe.
Per iniziare con i CGI in Perl potresti trovare interessante il
moduli CGI:
perldoc CGI
Da un form del genere:
<form method="post" action="cgi-bin/
script1.pl
">
valore 1 <input type="text" name="name1">
<br>valore 2 <input type="text" name="name2">
<br>valore 3 <input type="text" name="name3">
<input type="submit" value="Invia">
</form>
che richiama cgi-bin/
script1.pl
 :
#!c:/perl/bin/perl.exe
use strict;
no strict 'subs';
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
my $q = new CGI;
open OUT,">stato.out" or die "$!";
$q->save(OUT);
close OUT;
print $q->header,
      $q->start_html('Miapagina'), 
      $q->h1('Ho processato la form'),         
      $q->end_html;
Il quale salva lo stato in stato.out
Il seguente script lo va poi a rileggere e presentare a video:
#!c:/perl/bin/perl.exe
use strict;
no strict 'subs';
use CGI;
use CGI::Carp qw/fatalsToBrowser/;
open IN,"stato.out" or die "$!";
my $q = new CGI(IN);
close IN;
print $q->header,
      $q->start_html('Miapagina2'), 
      $q->h1('Rileggo lo stato');
foreach my $name ($q->param()) {
	print "<br>$name = ".$q->param(-name=>$name);
}    
print $q->end_html;

 close OUT;
Il file stato.out viene aperto ogni volta in modalità "out" (credo...) ma
così facendo ogni utente che acceda al form cancella i dati degli
eventuali utenti precedenti... come si fa ad aprire stato.out in modalità
append?
P.S. bisogna che lo impari questo Perl... sta incominciando a piacermi.

>
e
+>>

 Da un form del genere:
[cut]
Avevo lo stesso problema... ringraziamento postumo, ma sentito. non ho
ancora risolto ogni cosa, ma già vedo i primi risultati...
Se il mio problema fosse analizzare l'input di una sola variabile e
poi aprire una pagina html già pronta e formattata, come dovrei fare?
(uso ActivePerl su win2000server)
-- 
Gilby Sarto's - My Hompage: 
http://www.cislveneto.it/fnp/gilby/
 
The gilby sarto Show! ICQ 58177923-Membro del SAQS di IFTMDG
       - Fantallenatore della Depredator I -

 ha esclamato:
Rettifico:
Se il mio problema fosse analizzare l'input, proveniente da una pagina
html, di una sola variabile per poi aprire, a seconda del caso, una
pagina html già pronta e formattata, come dovrei fare?
(uso ActivePerl su win2000server)
Visti i problemi che sto incontrando, quasi quasi sostituisco la
pagina html direttamente con un form il perl.


 (uso ActivePerl su win2000server)
Bhe, il modo + semplice è quello di usare il modulo CGI.pm
(per info: perldoc CGI da prompt)
#!c:/perl/bin/perl.exe
use CGI;
use CGI::Carp (fatalsToBrowser);
use strict;
use warnings;
my $q=new CGI;
print $q->header;
if ($q->param('input') eq "stringa1") {
	stampo_pag_html("pag1");
 
} elsif ($q->param('input') eq "stringa2")  {
	stampo_pag_html("pag2");	
} else {
	stampo_pag_html("errore");
}
print $q->end_html;
#============= S U B ===============================
sub stampo_pag_html {
	my ($title)=@_;
	print $q->center($q->h1("$title"));
}
Naturalmente in stampo_pag_html puoi far leggere da disco una pag html 
ecc ecc