• Publicidad

Sub anónimo

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

Sub anónimo

Notapor lucas » 2012-03-16 14:03 @627

Hola. Primeramente quiero saludarles a todos nuevamente.

Tengo un problema.

Considerando el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $salida->{$_}{'marca'} = 'adidas'
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Luego haciendo un print(), o escribiendo en un archivo Excel, la salida es correcta: adidas.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $salida->{$_}{'marca'};
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ahora viene el problema.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. $salida->{$_}{'marca'} = sub { my $a = "adidas"; return $a}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Esto me retorna CODE(0xa303878)

He probado colocando un & pero tampoco resulta:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print &$salida->{$_}{'marca'};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Me dice:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. Not a CODE reference at archivos/file.pl line 161. 


¿Cuál podría ser el problema?

Gracias
lucas
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2009-08-19 09:42 @446

Publicidad

Re: Sub anónimo

Notapor explorer » 2012-03-16 14:16 @636

Cuando defines una subrutina con sub, lo que estás guardando es una referencia al código creado. Por eso sale CODE.

Entonces solo hay que desreferenciarlo para ejecutarlo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print $salida->{$_}{'marca'}();
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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sub anónimo

Notapor lucas » 2012-03-16 14:37 @650

¡Muchas gracias! ¡Ya funciona!
lucas
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2009-08-19 09:42 @446


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 1 invitado