Newsgroup: it.comp.lang.perl
Titolo: AIUTAMI E TI REGALO UNA BELLA POESIA ;)

Ciao, se mi aiuti a risolvere un mio piccolo problema su uno script in perl,
ti regalo una poesia, che ne dici? :)))
dunque, questo scritp dovrebbe copiare il contenuto di un file su un altro
file, quando questi due files si trovano nella stessa directory non ci sono
problemi....mahhh, il problema comincia a sorgere quando il file su cui si
vuole copiare il contenuto č presente in un altra directory!
Come di certo saprai quando ti connetti tramite FTP per aggiornare le tue
pagine Web ti ritrovi subito sotto la directory principale dove sono
presenti tutte le tue cartelle ed i tuoi files, ad esmpio:
images
cgi-bin
rubrica
index.htm
main.htm
logo.gif
supponiamo che io ho il file "dati.txt" sotto la directory "cgi-bin" ed il
file "rubrica.xml" nella directory "rubrica"
ora...utilizzando lo script che ho creato "add.cgi" presente nella directori
"cgi-bin" dovrebbe leggere il contenuto del file "dati.txt" che si trova
nella stessa directory e poi copiarne il contenuto nel file "rubrica.xml"
che si trova sotto la directory "rubrica"!
eseguendo lo script non riesce a trovare il file rubrica.xml. Forse perche
ho sbagliato a scrivere il percorso.
domanda: come fare per specificare il percorso corretto del file
"rubrica.xml"?
vi riporto il mio script, dove avrņ sbagliato?
#!/usr/bin/perl
print "Content-type:text/html\n\n";
$file1 = "dati.txt";
$dir = "/rubrica";
$filex = "rubrica.xml";
$file2 = $dir . $file 2;
open(a, "<$file1") or die print "Non apre dati.txt";
open(b, ">$file2") or die print "Non apre rubrica.xml";
while($riga=<a>){
print b $riga;
}
print"copia effettuata";
close(a);
close(b);
Risolvimi il problema e vinci la poesiola, magari da dedicare alla tua
fidanzata o mogliettina. ciao






prova con
$file_in= "/cgi-bin/dati.txt";
$file_out="/rubrica/rubrica.xml";
open(FILE_IN, "<  $file_in") || die print "Non apre $file_in";
 open(FILE_OUT, ">  $file_out") || die print "Non apre $file_out";
 while($riga=<FILE_IN>){
 print FILE_OUT $riga;
 }
close(FILE_IN);
close(FILE_OUT);
HTH (no poesie please!)

 wrote in message
9is7q6$vd9$2...@lacerta.tiscalinet.it...



In coda trovi uno script  che fornisce due soluzioni.
Per usarlo devi solo cambiare le variabili $ifile/$ofile con i tuoi
paths completi.
Eseguite come root  sul mio sistema (SUSE 6.4) funzionano entrambe.
Fai un copia/incolla e, prima di eseguire lo script,  dai  il comando:
chmod +x 
copyfile.pl
HTH
------------------- copia/incolla --------------------
#! /usr/bin/perl
# 
copyfile.pl
$ifile='./
test.pl
';
$ofile='/tmp/test.pl1';
print "Prima soluzione - Copia il file con tutti gli attributi\n";
$cmd = 'cp ' . $ifile . '  ' .$ofile;
print "File Input $ifile  File Output $ofile\n";
print " $cmd\n";
system($cmd);
$cmd2 = 'ls -l ' . $ofile;
system($cmd2);
print "Seconda soluzione (leggi/scrivi):\n";
$ofile ='/tmp/test.pl2';
open(INP,"< $ifile") || die("Unable to open $ifile\n$!\n");
open(OUT,"> $ofile") || die("Unable to open $ofile\n$!\n");
while ( <INP> ) {
   print OUT $_;
   }
close(INP);
close(OUT);
$cmd3 = ' ls -l ' . $ofile;
system($cmd3);
exit;
------------------------------------------------------------------------
----

provato con
$file1 = "dati.txt";
$dir = "../rubrica";
$filex = "rubrica.xml";
$file2 = "$dir/$file" . 2;
Il fatto che il server ftp ti mette chroot sulla tua home non significa che
la tua home sia la root del server :)
(no, non è un gioco di parole anche se ci assomiglia... :-)
inoltre devi usare die "messaggio" non die print messaggio!