Newsgroup: it.comp.lang.perl
Titolo: come si legge un file su un altro server

Il solito pivello:
dovrei leggere (per salvare su un file *.txt) la pagina
www.prova.it/test.html
cosa dovrei usare?
Rimango  in trepidante attesa!!!
Grazie 2000.
Fulvio

 pagina 
www.prova.it/test.html
 cosa dovrei usare?
  1. Apri un socket sulla porta 80 del server 
www.prova.it
 ed invii 
     una richiesta GET per quell'URL;
  2. Usi i moduli della gerarchia LWP.
	Alla prossima,
		Marco

 cosa dovrei usare?


 Fulvio
Per info ed esempi su semplici pezzi di codice client-server: man perlipc
Senno' vedi un po' cosa puoi fare con questo: e' un codice un po' brutale ma
funzionante, che a suo tempo ho scaricato, e modificato alla come viene
viene.
Lo uso per scaricare da shell files dal web. Sotto linux fa il suo mestiere,
altrove non so.
Ciao, marco
#!/usr/bin/perl
# Most error checking left out for brevity.
# Requires at least Perl version 5.
# Usage: httpget host[:port]/path/[file]
$_ = shift @ARGV;
($site, $url) = /(^.+?)(\/.*)/;
if ($url !~ /\/$/) {
        ($path,$file) = ($url =~ /(.*)\/(.+)/);
}
$_ = $site; ($desthost, $port) = /([^:]*)(.*)/;
$port = 80 unless $port;        # Default http port is 80
print STDERR "Salvo $path/$file da $desthost, porta $port\n";
use Socket;
chop($thishost = `hostname`);
$proto = (getprotobyname('tcp'))[2];
# Unless service is a number, look it up in /etc/services.
$port = (getservbyname($port, 'tcp'))[2] unless $port =~ /^\d+$/;
$thisaddr = (gethostbyname($thishost))[4];
$thataddr = (gethostbyname($desthost))[4] ||
        die "Unknown host '$desthost'";
$this = pack('S n a4 x8', AF_INET, 0, $thisaddr);
$that = pack('S n a4 x8', AF_INET, $port, $thataddr);
# Create the connection to a remote server.
socket(S, PF_INET, SOCK_STREAM, $proto) || die "socket: $!";
bind(S, $this) || die "bind: $!";
connect(S, $that) || die "connect: $!";
select(S); $| = 1; select(STDOUT);
print S "GET $url\r\n"; # Send request to get the document.
if ($file and $file !~ /\.htm(l*)$/) { open STDOUT,">$file" }
# Teniamo traccia per vedere se la roba arriva o no
$MaxBytes = 1024;
while(<S>) {
        print;
        $count += length($_);
        if ($count >= $MaxBytes) {
                print STDERR '#';
                $count -= $maxbytes;
        }
}       # Read back the result.
close STDOUT if $file and $file !~ /\.htm(l*)$/;
print STDERR "\n";
--
Marco Cacchiani                                
e-mail:ma...@sirius.pisa.it
Public pgp key:         
http://www.sirius.pisa.it/marco/pgp_public_key.asc
Sirius Servizi Informatici                     e-mail: 
in...@sirius.pisa.it
Parco Teatro Pasolini, 1                       Phone:  +39 (50) 865120
I-56019 - Vecchiano                            Fax:    +39 (50) 860260
(Pisa - ITALIA)                                
http://www.sirius.pisa.it/

Grazie!!!
Spero di capirci qualcosa!
Sto ancora  aspettando che mi arrivi una guida Apogeo.
Nel frattempo le uniche che ho letto sono quelle on-line di 
html.it
 e
un'altra su un sito trovato quì con le faq (non ricordo il nome), ma ho già
fatto grazie al vostro aiuto un programmino per appendere testo su centinaia
di file sul server che mi risparmia 30 min. di download!!!
Bye
Fulvio

 news:8dh6gu$606$1...@lacerta.tiscalinet.it...


   2. Usi i moduli della gerarchia LWP.
Vedrņ di farne buon uso!
Bye
Fulvio

> di file sul server che mi risparmia 30 min. di download!!!
Ops..volevo dire upload.
F.