• Publicidad

Uso y creación de módulos

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Uso y creación de módulos

Notapor aramallal » 2007-07-16 05:27 @268

Buenos días,

Estoy intentando organizar mi script un poco. He decidido dividirlo en módulos y llamarlos desde el script principal. No sé si esto es lo correcto porque no funciona bien:

Script principal.pl:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use lib "/root/proyect/";
print ("buenos días") ;
use secundario;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Modulo secundario.pm:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

print ("buenas tardes");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y con esto parece que funciona pero me ejecuta antes el módulo secundario.pm que las anteriores instrucciones del principal, es decir la salida es buenas tardes y luego buenos días cuando debería ser al revés.

¿Alguna idea? Gracias y un saludo.
aramallal
Perlero nuevo
Perlero nuevo
 
Mensajes: 63
Registrado: 2007-06-12 06:29 @312

Publicidad

Notapor explorer » 2007-07-16 06:47 @324

Las sentencias 'use' se 'ejecutan' en el estado de compilación del programa, por lo que aparece antes el resultado.

Otra forma de tener funciones externas y ejecutarlas en un determinado orden es usando la función do().

Sería algo así (no probado):
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use lib "/root/proyect/";
print ("buenos días") ;
do 'secundario.pm';
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

Notapor aramallal » 2007-07-16 06:51 @327

Gracias, explorer, ¡voy a probarlo ahora mismito!
aramallal
Perlero nuevo
Perlero nuevo
 
Mensajes: 63
Registrado: 2007-06-12 06:29 @312

Notapor aramallal » 2007-07-16 06:58 @332

¿Sabes lo que pasa? Si quiero que utilice variables del programa principal, ¿cómo lo haría? y viceversa, variables que tenga en el secundario ¿cómo las paso al principal?. Porque con una subrutina normal le doy return $variable pero en este caso ¿cómo funciona?
aramallal
Perlero nuevo
Perlero nuevo
 
Mensajes: 63
Registrado: 2007-06-12 06:29 @312

Notapor explorer » 2007-07-16 09:02 @418

Mira primero aquí:
viewtopic.php?t=1689
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 preiddy » 2007-07-16 13:56 @622

No es que sepa mucho, pero trataré, algunos de mis scripts lo tengo así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CONECTAR;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

En este tengo la conexión a mi bd sobre mysql.
luego en el script lo llamo
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$sth= &dbh->prepare("SELECT ... from ...");
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Se que no es la manera mas correcta de hacerlo, pero funciona.
Y en el CONECTAR al final hay que poner un return.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use DBI;
use strict;
#############
sub DBH
{
my $dbh= DBI->connect ("DBI:mysql:host=localhost;database=","","")
if (! defined $dblemi){die "Fallo en la conexión\n"; }
}
return (1);
 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Así es como los he estado haciendo, en esta misma web hay un artículo muy bueno para hacerlo mucho mejor. Te lo recomiendo!
preiddy
Perlero nuevo
Perlero nuevo
 
Mensajes: 70
Registrado: 2006-03-29 05:43 @280
Ubicación: Madrid, España


Volver a Básico

¿Quién está conectado?

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