• Publicidad

Valor de retorno de un package

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

Valor de retorno de un package

Notapor enicognatus » 2012-04-10 10:47 @491

Hola amigos, he estado viendo el foro y está muy bueno y muy completo, a pesar de esto hay algo
que no encontré o tal vez no miré bien. Mi duda es la siguiente:

He creado un package con el nombre de configuración, con la función conexion_bd();
éste es llamado desde otro perl; el problema es que si no le pongo al package un 1; o return 1;
mi función no se ejecuta dándome el siguiente mensaje de error:

configuracion.pm did not return a true value at variables.pl line 10.

Me doy cuenta de que sin el uno toma como que no se retorna un valor verdadero, ahora esto tal
vez se debe trabajar de alguna manera como para manejo de errores, no lo sé, y eso me gustaría saber, si está bien que le ponga un return 1; o debo hacer alguna otra cosa.

El código está aquí:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package configuracion;
  2. use strict;                            #para forzar a declarar las variables antes de usarlas.
  3.  
  4. ##código Package.
  5.  
  6. sub conexion_bd() {
  7.  
  8.     print "hola";
  9.     my $usuario = "nombre_de_usuario";
  10.  
  11.     return $usuario;
  12. }
  13. return 1;
  14.  
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Ahora el perl que lo llama:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.  
  3. require "configuracion.pm";
  4.  
  5. my $usuario = "vacio";
  6. $usuario = configuracion->conexion_bd();
  7. print $usuario;
  8.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Muchas gracias.

Saludos.
Última edición por explorer el 2012-04-10 14:25 @642, editado 2 veces en total
Razón: Formateado de código con Perltidy
enicognatus
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-04-05 12:56 @580

Publicidad

Re: Valor de retorno de un package

Notapor explorer » 2012-04-10 14:22 @640

Bienvenido a los foros de Perl en Español, enicognatus.

Efectivamente: Perl requiere que la carga de un módulo externo (package) mediante use o require, debe devolver un valor verdadero, generalmente de la ejecución de la última sentencia del módulo.

Perl carga el módulo y lo ejecuta, esperando que éste realice sus operaciones de inicialización. Si estas operaciones se encuentran con un problema, devolverían un valor falso, haciendo fallar la carga del módulo y avisando al usuario de que algo ha ido mal.

Lo que pasa es que en la mayoría de los módulos, no hay ese código de inicialización, y solo hay código que define o declara subrutinas, variables y métodos (como es tu caso). Como Perl sigue insistiendo en que necesita un valor de verdad como resultado de la carga, verás en muchísimos módulos un solitario '1;' como última línea del módulo.

Tienes el proceso de carga que realiza Perl cuando usas el use descrito en perldoc -f require. Más información en tu propio ordenador en perldoc perlfunc, secciones do, require y use en la Web (traducido).

Más información en tu propio ordenador en perldoc perlmod, y en la Web.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Valor de retorno de un package

Notapor enicognatus » 2012-04-11 12:52 @577

Muchísimas gracias, explorer, ahora me queda claro.

Los felicito porque tienen un excelente foro y dan muy buenas respuestas.

Saludos.
enicognatus
Perlero nuevo
Perlero nuevo
 
Mensajes: 2
Registrado: 2012-04-05 12:56 @580


Volver a Básico

¿Quién está conectado?

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