perl | Strings citadas, interpoladas y escapadas

Una string en Perl es una variable escalar y comienza con un signo ($) y puede contener letras, números y caracteres especiales. La string puede consistir en una sola palabra, un grupo de palabras o un párrafo de varias líneas. La string la define el usuario entre comillas simples (‘) o comillas dobles («). 
  
 

Strings citadas

  
En Perl, las strings se pueden poner entre comillas dobles (» «) o entre comillas simples (‘ ‘). Sin embargo, las strings definidas entre comillas simples y las definidas entre comillas dobles se tratan de manera diferente.
Strings entre comillas dobles: Las 
strings entre comillas dobles se interpolan, es decir, los nombres de variables (escalares, arrays y hashes) se reemplazan por sus valores originales y las secuencias de escape (como /t, /n, etc.) hacen su trabajo. 
El operador qq también se puede usar en lugar de strings entre comillas dobles.
Strings entre comillas simples: 
las strings entre comillas simples no se interpolan. Se interpretan tal cual, sin modificación alguna. El operador q en Perl proporciona el mismo uso que la string entre comillas simples.
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# An array of integers from 1 to 10
@list = (1..10);
 
# Non-interpolated string
$strng1 = 'Using Single quotes: @list';
 
# Interpolated string
$strng2 = "Using Double-quotes: @list";
print("$strng1\n$strng2");
Producción: 

Using Single quotes: @list 
Using Double-quotes: 1 2 3 4 5 6 7 8 9 10

 

  
 

Interpolación de strings

  
La interpolación de strings con el uso de comillas dobles a veces puede volverse complicada porque algunas strings contienen símbolos que pueden no ser útiles cuando se interpolan. Por ejemplo: símbolo ‘@’ utilizado para escribir direcciones de correo electrónico. Cuando una dirección de correo electrónico debe almacenarse en una string entre comillas dobles, el signo ‘arroba’ (@) se interpola automáticamente y se toma como el comienzo del nombre de una array y se sustituye por él. Si se encuentra una array con ese nombre, reemplazará el nombre de la array con los valores de la array, o se dejará en blanco si no existe una array con ese nombre.
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Assigning a variable with an email address
# using double-quotes
$email = "GeeksforGeeks0402@gmail.com";
 
# Printing the interpolated string
print($email);
Producción: 

GeeksforGeeks0402.com

 

En el ejemplo anterior, la string ($email) se interpola y @gmail se sustituye por una array llamada ‘@gmail’ pero como no se encuentra una array con ese nombre, @gmail se elimina pero no se sustituye y, por lo tanto, «GeeksforGeeks0402.com » está impreso.
En el siguiente ejemplo, @gmail se ha predefinido y, por lo tanto, se sustituye en lugar de @gmail. 
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Pre-defining the array
@gmail = (a..g);
 
# Assigning a variable with an email
# address using double-quotes
$email = "GeeksforGeeks0402@gmail.com";
 
# Printing the interpolated string
print($email);
Producción: 

GeeksforGeeks0402a b c d e f g.com

 

Esto se puede corregir usando comillas simples en lugar de comillas dobles. Asignar la string a la variable con el uso de comillas simples eliminará la interpolación y, por lo tanto, la ‘@’ no se considerará como una declaración de array. 
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Assigning a variable with an email address
# using single-quotes
$email = 'GeeksforGeeks0402@gmail.com';
 
# Printing the non-interpolated string
print($email);
Producción: 

GeeksforGeeks0402@gmail.com

 

La solución anterior al problema de la interpolación contiene un inconveniente. ¿Qué sucede si es necesario sustituir el valor de una variable en la string junto con el uso del símbolo ‘@’? Entonces este método no será de utilidad ya que las comillas simples no permitirán la sustitución del valor de la variable. Para superar esta situación, se utiliza el carácter de escape, es decir, la barra invertida (\). La barra invertida se inserta justo antes de la ‘@’ como se muestra a continuación: 
 

Perl

#!/usr/bin/perl
 
# Assigning a variable with an email
# address using double-quotes
# Note: Using '\' to escape the
# interpolation of '@'
$email = "GeeksforGeeks0402\@gmail.com";
 
# Printing the interpolated string
print($email);
 
# variable to be substituted
$name = "GeeksforGeeks";
 
# variable to store the string
$email2 = "\n$name\@gmail.com";
 
# Printing the interpolated string
print($email2);
Producción: 

GeeksforGeeks0402@gmail.com
GeeksforGeeks@gmail.com

 

  
 

Escapando del personaje de escape

  
La barra invertida es el carácter de escape y se usa para hacer uso de secuencias de escape. Cuando es necesario insertar el carácter de escape en una string interpolada, se utiliza la misma barra invertida para evitar la sustitución del carácter de escape por ” (en blanco). Esto permite el uso del carácter de escape en la string interpolada.
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Using Two escape characters to avoid
# the substitution of escape(\) with blank
$string1 = "Using the escape(\\) character";
 
# Printing the Interpolated string
print($string1);
Producción: 

Using the escape(\) character

 

  
 

Escapar de comillas dobles

  
El uso de comillas dobles en una string significa el final de la string y, por lo tanto, no se puede insertar directamente. Para insertar comillas dobles en una string interpolada, se usa una barra invertida justo antes de las comillas dobles para escapar de su interpolación.
Ejemplo: 
 

Perl

#!/usr/bin/perl
 
# Escaping double-quotes with '\'
$string = "This page is \"Geeks For Geeks\".";
 
# Printing the interpolated string
print($string);
Producción: 

This page is "Geeks For Geeks".

 

Publicación traducida automáticamente

Artículo escrito por KoushikMasavarapu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *