• Publicidad

txt y sock

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

txt y sock

Notapor joss » 2007-09-13 12:29 @562

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print "introduce el txt:";
$arch=<STDIN>;

open (a,"$arch");
@site = <a>;
close (a);
$b = scalar(@site);

for($a=0;$a<=$b;$a++) {

    $sock = IO::Socket::INET->new(PeerAddr => $site[$i], PeerPort => 80, Proto => "tcp");

    if ($sock) {

        print $site[$a];
    }
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Lo que pretendo con este código es cargar un texto con muchas webs y que compruebe cuáles funcionan y te las muestre. Pero algo falla.

Código: Seleccionar todo
introduce el txt:webs2.txt
Can't locate object method "new" via package "IO::Socket::INET" (perhaps you for
got to load "IO::Socket::INET"?) at C:\Documents and Settings\JosS y bEa\Escrito
rio\wat.pl line 13.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Publicidad

Notapor explorer » 2007-09-13 13:24 @600

El error dice que no has puesto la línea use IO::Socket::INET;.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor joss » 2007-09-13 13:59 @624

si despiste tonto. pero ahora no me hace nada.

Código: Seleccionar todo
introduce el txt:webs2.txt
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor kidd » 2007-09-14 09:12 @425

Recuerda que todas las cadenas que lees de <STDIN> incluyen al final el caractér de nueva línea '\n', por lo que debes de hacerle un chomp al valor antes de usarlo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
chomp $arch;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Por este mismo motivo, SIEMPRE debes de comprobar que tuviste éxito al abrir el archivo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
open my $FILE, '<', $arch or die $!;
my @site = <$FILE>;
close $FILE;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y como recomendación extra, siempre usa el pragma strict en tus scripts, esto te obligará a hacer código más correcto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use strict;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor joss » 2007-09-16 05:31 @272

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use IO::Socket::INET;
use strict;

print "introduce el txt:";
$arch=<STDIN>;
chomp $arch;

open my $FILE, '<', $arch or die $!;
my @site = <$FILE>;
close $FILE;

$b = scalar(@site);

for($a=0;$a<=$b;$a++)

{

$sock = IO::Socket::INET->new(PeerAddr => $site[$i], PeerPort => 80, Proto => "tcp");

if ($sock)

{

print $site[$FILE];
}


}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Error:
Código: Seleccionar todo
Global symbol "$arch" requires explicit package name at C:\Documents and Setting
s\JosS\Escritorio\Programando\Perl\project\wat.pl line 5.
Global symbol "$arch" requires explicit package name at C:\Documents and Setting
s\JosS\Escritorio\Programando\Perl\project\wat.pl line 6.
Global symbol "$arch" requires explicit package name at C:\Documents and Setting
s\JosS\Escritorio\Programando\Perl\project\wat.pl line 8.
Global symbol "$sock" requires explicit package name at C:\Documents and Setting
s\JosS\Escritorio\Programando\Perl\project\wat.pl line 18.
Global symbol "$i" requires explicit package name at C:\Documents and Settings\J
osS\Escritorio\Programando\Perl\project\wat.pl line 18.
Global symbol "$sock" requires explicit package name at C:\Documents and Setting
s\JosS y bEa\Escritorio\Programando\Perl\project\wat.pl line 20.
Execution of C:\Documents and Settings\JosS \Escritorio\Programando\Perl\pr
oject\wat.pl aborted due to compilation errors.
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor explorer » 2007-09-16 05:43 @280

Los errores se refieren a que Perl no sabe dónde están definidas las variables que usas en el programa. Algo así como que en un programa en C no sabemos si están definidas en el propio código fuente o en alguno que más tarde será incluido con 'include'.

Al principio del programa, y después del 'use strict', escribe:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $arch;
my $sock;
my $i;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados