Tipos de datos Perl

Perl es un lenguaje de tipado débil, por lo que las variables no necesitan especificar un tipo. El intérprete de Perl selecciona automáticamente el tipo adecuado según el contexto.

Perl tiene tres tipos de datos básicos: escalares, arrays y hashes. A continuación se explican estos tres tipos de datos:

N.º Tipo y descripción
1 Escalar

El escalar es el tipo de dato más simple en Perl. Las variables de este tipo pueden ser números, cadenas o números de punto flotante, sin distinción estricta. Al usarlas, se añade delante del nombre de la variable un$$, lo que indica que es un escalar. Por ejemplo:

$myfirst=123;     #数字123 

$mysecond="123";   #字符串123 
2 Array

Las variables de tipo array comienzan con el carácter@@, el índice comienza desde 0, por ejemplo:@arr=(1,2,3)

@arr=(1,2,3)
3 Hash

Un hash es una colección desordenada dekey/valuepares. Puedes usar las claves como subíndice para obtener valores. Las variables de hash comienzan con el carácter%%.

%h=('a'=>1,'b'=>2); 

Literales numéricos

1. Enteros

Perl realmente almacena los enteros en los registros de punto flotante de tu computadora, por lo que en realidad se tratan como números de punto flotante.

En la mayoría de las computadoras, los registros de punto flotante pueden almacenar aproximadamente 16 dígitos; los que exceden esta longitud se descartan. Los enteros son en realidad un caso especial de los números de punto flotante.

Variables enteras y operaciones:

$x = 12345;
if (1217 + 116 == 1333) {
    # 执行代码语句块
}

Números octales y hexadecimales: los octales comienzan con 0, los hexadecimales comienzan con 0x. Por ejemplo:

$var1 = 047;    # 等于十进制的39
$var2 = 0x1f;   # 等于十进制的31

2. Números de punto flotante

Los datos de punto flotante son como: 11.4, -0.3, .3, 3., 54.1e+02, 5.41e03.

Los registros de punto flotante generalmente no pueden almacenar números de punto flotante con precisión, lo que genera errores; se debe prestar especial atención en las operaciones y comparaciones. El rango del exponente suele ser de -309 a +308.

Ejemplo

#!/usr/bin/perl $value = 9.01e+21 + 0.01 - 9.01e+21; print ("El primer valor es:", $value, "\n"); $value = 9.01e+21 - 9.01e+21 + 0.01; print ("El segundo valor es:", $value, "\n");

Al ejecutar el programa anterior, el resultado es:

第一个值为:0
第二个值为:0.01

3. Cadenas

Las cadenas en Perl se representan mediante un escalar. La forma de definirlas es muy similar a la de C, pero en Perl las cadenas no terminan con \0.

Diferencia entre comillas dobles y comillas simples en Perl: las comillas dobles pueden interpretar correctamente algunos caracteres de escape y variables, mientras que las comillas simples no pueden interpretarlos y los generan tal cual.

Pero al definir con comillas simples se pueden usar textos de varias líneas, como se muestra a continuación:

#!/usr/bin/perl 

$var='这是一个使用

多行字符串文本

的例子';

print($var);

Al ejecutar el programa anterior, el resultado es:

Esto es un ejemplo que usa

texto de cadena multilínea

Algunos caracteres de escape comunes en Perl se muestran en la siguiente tabla:

Carácter de escape Significado
\\ Barra invertida
\' Comilla simple
\" Comillas dobles
\a Campana del sistema
\b Retroceso
\f Avance de página
\n Nueva línea
\r Retorno de carro
\t Tabulación horizontal
\v Tabulación vertical
\0nn Crea un número en formato octal
\xnn Crea un número en formato hexadecimal
\cX Carácter de control, x puede ser cualquier carácter
\u Fuerza a mayúscula el siguiente carácter
\l Fuerza a minúscula el siguiente carácter
\U Fuerza la conversión de todos los caracteres a mayúsculas
\L Fuerza la conversión de todos los caracteres a minúsculas
\Q Añade una barra invertida a los caracteres no-palabra (non-word) hasta \E
\E Termina \L, \U, \Q

Ejemplo

Ahora veamos en detalle el uso de las comillas simples, comillas dobles y caracteres de escape:

Ejemplo

#!/usr/bin/perl # El salto de línea \n está dentro de comillas dobles, es válido $str = "Ejemplo\nwww.example.com"; print "$str\n"; # El salto de línea \n está dentro de comillas simples, no es válido $str = 'Ejemplo \nwww.example.com'; print "$str\n"; # Solo R se convertirá a mayúscula $str = "\uejemplo"; print "$str\n"; # Todas las letras se convertirán a mayúsculas $str = "\Uejemplo"; print "$str\n"; # La parte especificada se convertirá a mayúsculas $str = "Welcome to \Uejemplo\E.com!"; print "$str\n"; # Añade una barra invertida a los caracteres no-palabra (non-word) hasta \E $str = "\QWelcome to ejemplo's family"; print "$str\n";

El resultado de ejecutar el ejemplo anterior es:

Otras extensiones