[perl] otra duda

=?iso-8859-1?B?TWFudWVsIFDpcmV6IEzzcGV6?= mapelo@writeme.com
Sat, 6 Feb 1999 01:41:31 +0100


Hola a todos y a Salvador:

Primero dar las gracias a Salvador, y comentarle que no he podido contestarle antes por no disponer de conexión hasta este fin de semana. 

Ya el servidor Apache que me ejecuta el script en Perl es el de mi servidor de webs, modifiqué tu sugerencia para ver si funcinaba levemente, quedándome algo así como:


#!/usr/bin/perl -w
use IO::Socket::INET;

print "Content-type: text/html\n\n";
print "<html><head><title></title></head><body>\n";
my $CRNL = "\015\012"; # por portabilidad
$ARGV[0]="www.arrakis.es/~mapelo/portada.htm";
my ($addr, $URI) = split('/',$ARGV[0],2);
print "Probando conexión con '$addr'<br>\n";
my $sock = IO::Socket::INET->new(PeerAddr => $addr,PeerPort => 'http(80)',Proto => 'tcp');
print "Solicitando '/$URI' <br>\n";
print $sock "HEAD /$URI HTTP/1.0${CRNL}Accept: */*$CRNL$CRNL";
my $resp = $sock->getline;
my ($proto, $status, $words) = $resp =~ m|HTTP/(\d.\d) (\d{3}) (.*)|;
print "Status: $status $words\nProtocolo: HTTP/$proto <br>\n";
print "Extra headers:<br>\n";
while($resp = $sock->getline) {
print "$resp <br>\n";
}

print "</body></html>\n";


sin embargo, me parece que falla la llamada a la rutina IO::Socket::INET, que supongo tendrá que estar instalada en uno de mis subdirectorios. Busqué el dichoso paquete y encontré uno llamado Inet.pm, que supuse era el que necesitaba, pero hace llamadas con 'use' a un montón más de subrutinas, por lo que he tenido que dejarlo. ¿Salvador, mis razonamientos son correctos, o estoy divagando demasiado? ¿Cuál es mi error?

Un saludo




**************************************************************
Manuel Pérez López mapelo@writeme.com

en http://www.arrakis.es/~mapelo/

**************************************************************





-----Mensaje original-----
De: Salvador Ortiz Garcia <sog@msg.com.mx>
Para: Manuel Pérez López <mapelo@writeme.com>
CC: perl@tlali.iztacala.unam.mx <perl@tlali.iztacala.unam.mx>
Fecha: lunes 1 de febrero de 1999 21:36
Asunto: Re: [perl] otra duda


>On Sat, 30 Jan 1999, Manuel Pérez López wrote:
>
>> Buenas:
>> 
>> El otro día, me encontré una página que, tras darle la url de mi
>> página, me sacó por pantalla este trozo de texo:
>> 
>> $ Conectando con www.arrakis.es
>> $ Solicitando página http://www.arrakis.es/~mapelo/portada.htm
>> $ Respuesta de www.arrakis.es: HTTP/1.1 200 OK
>> 
>> por lo que supuese que estaba comprobando la existencia de tal página. 
>> 
>> El proceso que sigue me ha interesado muchisimo, ya que yo tambien
>> quisiera programar algún sencillo script en Perl que pudiera comprobar
>> la existencia de páginas. ¿Alguien tiene idea de como empezar?
>
>En CPAN <http://www.perl.com/CPAN/> encuentras libwww-perl que tiene todo
>lo que quieras y más para comunicarte con un servidor de WEB.
>
>Ahora que si quieres _entender_ el asusto leete la documentación del
>protocolo HTTP 1.1  que puedes encontrar en <http://www.w3.org/Protocols/>
>
>Al final un mini script que comprueba a pata (sin usar módulos extras) la
>existencia de una página sin traer su contenido y para usarse como:
>
>$ ./chkpage www.w3.org/Protocols/
>Probando conexión con 'www.w3.org'
>Solicitando '/Protocols/'
>Status: 200 OK
>Protocolo: HTTP/1.1
>Extra headers:
>Date: Mon, 01 Feb 1999 20:19:15 GMT
>Server: Apache/1.2.6
>Last-Modified: Thu, 28 Jan 1999 14:15:58 GMT
>ETag: "2f3d64e8-4b89-36b0711e"
>Accept-Ranges: bytes
>Connection: close
>Content-Type: text/html; charset=ISO-8859-1
> 
>
>Saludos
>
>Salvador Ortiz
>
>=========== CUT ===========
>#!/usr/bin/perl -w
>use IO::Socket::INET;
>
>my $CRNL = "\015\012"; # por portabilidad
> 
>my ($addr, $URI) = split('/',$ARGV[0],2);
>print "Probando conexión con '$addr'\n";
>my $sock = IO::Socket::INET->new(PeerAddr => $addr,
> PeerPort => 'http(80)',
> Proto => 'tcp');
>print "Solicitando '/$URI'\n";
>print $sock "HEAD /$URI HTTP/1.0${CRNL}Accept: */*$CRNL$CRNL";
>my $resp = $sock->getline;
>my ($proto, $status, $words) = $resp =~ m|HTTP/(\d.\d) (\d{3}) (.*)|;
>print "Status: $status $words\nProtocolo: HTTP/$proto\n";
>print "Extra headers:\n";
>while($resp = $sock->getline) {
>    print $resp;
>}
>
>
>

--------- Pie de mensaje --------------------------------
Visite: http://tlali.iztacala.unam.mx/~randrade/perl.shtml
Cancelar inscripcion:
mail to: majordomo@tlali.iztacala.unam.mx
text   : cancelacion perl