2. TIPOS DE DATOS.

Los tipos de datos básicos son :

+ Escalares.

+ Arreglos indexados de Escalares.

+ Arreglos Asociativos de Escalares.

Los escalares pueden ser strings, numéricos o booleanos dependiendo del contexto. Valores de 0 (cero) y '' (null string) son falsos; cualquier otra cosa es verdadera.

Los tipos de variables son determinados por la anteposición de un caracter especial.

$ Escalar.

@ Arreglo Indexado.

% Arreglo Asociativo.

& Función.

Todos los tipos de datos tienen su propio nombre, así como las etiquetas, funciones, archivos y manejadores de directorios.

2.1 Escalares.

Se utiliza un $ para indicar un valor escalar.

$foo = 3.141592;

$foo = 'rojo';

$foo = "era $foo antes"; # variable interpolada.

$host = `hostname`; # se usan backticks ``.

($foo, $bar, $glarch) = ('rojo', 'azul', 'verde');

($foo, $bar) = ($bar, $foo) # intercambio

2.1.1 Variables Escalares Especiales.

Los Escalares Especiales son llamados con signos de puntuación (excepto $0). Algunos ejemplos son :

$0 Nombre del script que se está ejecutando actualmente.

$_ Default para operadores de patrones y E/S implícita.

$$ El PID actual.

$! El mensaje de error actual del sistema (de errno).

$? Estatus del último `backtick`, pipe, o sistema.

$| Si la salida tiene buffer.

$. El número de la línea actual de la última entrada.

$[ Arreglo base, por default es 0, awk usa 1.

$ $( El GID real del proceso.

$> El UID efectivo del proceso.

$) El GID efectivo del proceso.

2.2 Arreglos.

2.2.1 Arreglos Indexados (Listas).

$ Para un elemento escalar.

@ Para todos.

       $foo[$i+2] = 3; # Establecer un elemento con el valor 3.

@foo = ( 1, 3, 5 ); # Inicializar todo el arreglo.

@foo = ( ); # Inicializa un arreglo vacío.

@foo = @bar; # copiar todo el arreglo.

@foo = @bar[$i..$i+5]; # copiar una parte del arreglo.

$#ARRAY es el índice de el más alto subscript, cuyo nombre de script es $0 y sus argumentos corren de $ARGV[0] hasta $ARGV[$#ARGV], inclusive.

2.2.2 Arreglos Asociativos (hashed).

$ Para un elemento escalar.

% Para todos.

       $ranas{'verdes'} += 23;         # 23 o más ranas verdes.

$location{$x, $y, $z} = 'troll';# Arreglo multi-dimensional.

%foo = %bar; # Copiar todo el arreglo.

@ranas{'verdes', 'azules', 'amarillas'} = (3, 6, 9);

2.2.3 Variables Especiales de Arreglos.

@ARGV Argumentos de la línea de comandos.

@INC Buscar el path para archivos llamados con do.

@_ Default para los parámetros de subrutinas y split.

%ENV El ambiente actual; por ejm.: $ENV['HOME']

%SIG Usado para señalar manejadores.

			sub trapped {

print STDERR "Interrupted\007\n";

exit 1;

}

$SIG{'INT'} = 'trapped';

2.3 Operadores.

Perl utiliza todos los operadores de C, excepto para type casting , `$' y `*' como operadores de direcciones, además de :

+ Exponenciación

**, **=

+ Operador de Rango

..

               $inheader = 1 if /^From / .. /^$/ ;

if (1..10) { do foo( ) ; }

for $i (60..75) { do foo($i); }

@new = @old[30..50];

+ Concatenación de Strings

. , .=

               $x = $y . &frob(@list) . $z;

$x .= "\n";

+ Repetición de Strings

x, x=

               $bar = '-' x 72;                # renglón de 72 guiones.
+ Comparación de Strings

eq, en, lt, gt, le, ge

               if ($x eq 'foo') { }

if ($x ge 'red') { }

+ Operadores de Comparación de archivos como /bin/test aumentados trabajan sobre strings o manejadores de archivos.
               if (-e $archivo) { }    # El archivo existe.

if (-z $archivo) { } # Longitud cero.

if (-O LOG) { } # LOG propio de un UID real.

die "$archivo no es archivo de texto" unless -T $archivo;


Volver