Ayuda con Perl - Iniciar desde X línea

Iniciado por knk.ink, 9 Octubre 2006, 18:06 PM

0 Miembros y 1 Visitante están viendo este tema.

knk.ink

Hola soy nuevo en perl, antes programaba en visual basic pero quise ir mas allá

tengo una duda con perl,

die "\nError $!\n"; }

Quiero que si hay un error en la aplicación, el programa vuelva a iniciar desde 0, o que vuelva a tratar desde X linea.

Me explico?

saludos.

Hendrix

Lo podrias ahcer kon un goto....un ejemplo de die es este:

if ($num != 18) {
die "Error\n";
}


Salu2

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián

knk.ink

Gracias por responder Hendrix.


El "script" en perl que estoy haciendo funciona con sockets, y hay un IF que conecta el socket, y hay un "die" que muestra el error, por si falla el socket

Lo que quiero es que si el socket falla, y vaya a "die".., el "die" vuelva a inicar la aplicación para que el socket vuelva a conectar e intente de nuevo ó que empieze desde X linea.


Es que (en el IF) si hay un error con el socket y no conecta ya sea por que no esta conectado a internet, pues te va a enviar a "die" y supongamos que "die" te muestra el mensaje que "no estas conectado a internet", lo que quiero es que en lugar de mostrar cualquier mensaje, intente de nuevo conectarse, como digo.. reiniciando la apliacación o que empieze desde X linea;

Citar
"si hay un error con el socket, vuelve a X linea ó inicia la aplicación"



Ojala me entiendan
Saludos.

devcode

use IO::Socket;
use strict;

my $sock;

while(1) {
   $sock = IO::Socket::INET->new(PeerAddr => 'host.com',
                                                   PeerPort => 80,
                                                   Proto => 'tcp');
   last if $sock;
}

dxr

yo meteria un sleep ya que sino puede ser un poco pesado...
Hacer preguntas concretas, claras y aportando toda la documentación necesaria.
De lo contrario, no tendreis una respuesta clara.

Off

Cita de: knk.ink en  9 Octubre 2006, 18:06 PM
Hola soy nuevo en perl, antes programaba en visual basic pero quise ir mas allá

tengo una duda con perl,

die "\nError $!\n"; }

Quiero que si hay un error en la aplicación, el programa vuelva a iniciar desde 0, o que vuelva a tratar desde X linea.

Me explico?

saludos.

En Visual Basic, se usaria "Manejo de Errores" [usando Resume Next, GoTo, etc] :-X

Pero en Perl podrias, como dijeron arriba, hacer un "If" con el resultado de la conexion del socket [es decir, comprobar si funciono o no] y a partir de ese resultado reconectar el socket (deberia ser mas facil, maldito Larry Wall :-X)

Ya de paso ¿no existen funciones similares a Resume Next [Visual Basic] en Perl? :huh:

Seria mas productivo y efectivo [tal vez] hacerlo de la ultima manera (y mas corto, por supuesto) >:D