• Publicidad

Manejador 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.

Re: Manejador de módulos

Notapor BigBear » 2016-11-02 17:22 @765

Gracias por la explicación, explorer. Tengo la duda final de cómo puedo saber los argumentos de cada función usando Class::Inspector, ¿o no se puede? Solo necesito que diga algo como funcion_cargar($variable,$tipo).
BigBear
Perlero frecuente
Perlero frecuente
 
Mensajes: 981
Registrado: 2009-03-01 18:39 @818

Publicidad

Re: Manejador de módulos

Notapor explorer » 2016-11-02 17:49 @784

Creo que no, que no se puede. Ahora bien... si la función tiene un prototipo, entonces sí que se puede saber, llamando a prototype(nombre-función). Más información en perldoc -f prototype

Hay algunos módulos que lo intentan "adivinar" mirando el código de la propia función, las primeras líneas, porque es ahí donde encontramos cosas como esta:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my($variable,$tipo) = @_;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

y entonces deducen que son dos los argumentos, y que se llaman así. Pero hay que tener en cuenta otros casos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $variable = shift;
  2. my $tipo     = shift;
  3.  
  4. my $variable = $_[0];
  5. my $tipo     = $_[1];
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

y cosas peores.

A partir de v5.22 (experimental) y de v5.24 (oficial), las subrutinas ya se pueden definir con una "firma":

sub funcion_cargar($variable, $tipo) { ... }

pero desconozco si, aún así, existe una forma de obtener los argumentos que no sea leyendo el código. Obviamente, ahora es más fácil saberlo, pero solo si el autor usar Perl >= v5.22.

En el Perl "bastardo", perl5i, sí que existe un método llamado signature(), que es un objeto que almacena el número de argumentos, y si la función es un método o una función.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Básico

¿Quién está conectado?

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