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
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 UID efectivo del proceso.
$) El GID efectivo del proceso.
$ 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.
$ 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);
@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';
Perl utiliza todos los operadores de C, excepto para type casting , `$' y `*' como operadores de direcciones, además de :
**, **=
..
$inheader = 1 if /^From / .. /^$/ ;
if (1..10) { do foo( ) ; }
for $i (60..75) { do foo($i); }
@new = @old[30..50];
. , .=
$x = $y . &frob(@list) . $z;
$x .= "\n";
x, x=
$bar = '-' x 72; # renglón de 72 guiones.
eq, en, lt, gt, le, ge
if ($x eq 'foo') { }
if ($x ge 'red') { }
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;