• Publicidad

Interpolación de funciones

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

Interpolación de funciones

Notapor Pichuzard » 2014-08-31 14:13 @634

Hola, buenas.

Soy principiante en esto de la programación en Perl y me encontré con un pequeño problema en un ejercicio propuesto en un libro de Perl al estar estudiando las referencias en el que me pide que mencione lo que imprime la siguiente línea de código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print("${\ref(\(1..5))}");
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

Mi respuesta inmediata fue ARRAY, pero mi sorpresa fue cuando al ejecutarlo me imprime SCALAR, ¿alguien sabe por qué?, según yo eso es una interpolación de la función ref() a la cual se le está pasando como parámetro una referencia a un ARRAY, precisamente una referencia a (1..5).

Espero me puedan resolver esta pequeña duda. De antemano, gracias. :D
Pichuzard
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-05-15 17:13 @759

Publicidad

Re: Interpolación de funciones

Notapor explorer » 2014-08-31 16:00 @708

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

El ejercicio es un poco enrevesado...

\(1 .. 5 ) devuelve cinco referencias. Cada una, a una constante (referencia al número 1, al 2, etc.)

ref( ) nos dice qué tipo de referencia es la que se le pasa como argumento. Aunque le estamos pasando 5 referencias, solo toma en cuanta una de ellas. Y devuelve el texto "SCALAR", ya que todas las referencias anteriores son a escalares.

Luego viene algo raro.

\ref() La presencia de la '\' inicial hace que obtengamos una referencia a lo que devuelve ref(). Como nos devolvió una cadena de texto ("SCALAR"), pues el resultado es una referencia a esa cadena de texto.

Finalmente, viene el proceso contrario: una desreferencia:

${ } hace la desreferencia de lo anterior, así que aquí volvemos a obtener la cadena de texto "SCALAR", que es al final lo que imprime el print().

Más información en tu propio ordenador en perldoc perlref, y en la Web (traducido al español).
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

Re: Interpolación de funciones

Notapor Pichuzard » 2014-09-01 18:30 @812

Gracias, explorer, creo que estudiaré más sobre las referencias. La verdad es que Perl es un lenguaje de programación muy interesante y en el que sabiéndolo utilizar se pueden lograr hacer muchas cosas en pocas líneas. Espero algún día poder dominarlo tanto o más que C. :)
Pichuzard
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2014-05-15 17:13 @759


Volver a Básico

¿Quién está conectado?

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