Interpolación de arrays en cadenas

Al igual que los escalares, los valores de un array son interpolados en las cadenas de comillas dobles. Los elementos son automáticamente separados mediante el separador de elementos de un array que es el valor guardado en la variable especial $". Esta variable contiene un espacio por defecto.

  DB<1> @a = 0..9
  DB<2> print "@a 10\n"
0 1 2 3 4 5 6 7 8 9 10
  DB<3> $email = "casiano@ull.es"
  DB<4> print $email
casiano.es
  DB<5> $email = 'casiano@ull.es'
  DB<6> print $email
casiano@ull.es
  DB<7> $email = "casiano\@ull.es"
  DB<8> print $email
casiano@ull.es

Un único elemento de un array es reemplazado por su valor. La expresión que aparece como índice es evaluada como una expresión normal, como si estuviera fuera de una cadena:

  DB<1> @a = 0..9
  DB<2> $i = 2
  DB<3> $x = "$a[1]"
  DB<4> p $x
1
  DB<5> $x = "$a[$i-1]"
  DB<6> p $x
1
  DB<7> $i = "2*4"
  DB<8> $x = "$a[$i-1]"
  DB<9> p $x
1

Ejercicio 1.13.1   ¿Cuál es la explicación para la salida de p $x en el último ejemplo?

Ejercicio 1.13.2  

Dado la siguiente sesión con el depurador

nereida:~/perl/src> perl -de 0
main::(-e:1):   0
DB<1> @a = 1..5
DB<2> ($a[0], $a[1]) = undef
DB<3>  p "@a"
¿Cuál es la salida de la impresión que aparece al final de la secuencia de comandos?. ¿Se produce alguna dvertencia? ¿Que ocurre si se cambia la última línea por esta otra?

DB<3> no warnings; $" = ', '; print "@a"

Casiano Rodríguez León
Licencia de Creative Commons
Principios de Programación Imperativa, Funcional y Orientada a Objetos Una Introducción en Perl/Una Introducción a Perl
por Casiano Rodríguez León is licensed under a Creative Commons Reconocimiento 3.0 Unported License.

Permissions beyond the scope of this license may be available at http://campusvirtual.ull.es/ocw/course/view.php?id=43.
2012-06-19