http://members.tripod.com/~MoisesRBB/perl.html
TUTORIAL DE PERL
1.INTRODUCCIÓN
.
1.1 Descripción.
1.2 Donde Conseguirlo.
2. TIPOS DE DATOS.
2.1 Escalares.
2.2 Arreglos.
2.3 Operadores.
3. CONTROL DE FLUJO.
5. ENTRADA/SALIDA.
8. SUBRUTINAS.
9. E/S FORMATEADA.
10. FUNCIONES DE ARREGLOS
INCLUÍDAS.
11. FUNCIONES STRING.
12. SCRIPTS SUID'S.
14. OPCIONES DE LA LÍNEA DE
COMANDOS.
1. INTRODUCCIÓN.
1.1 Descripción.
1.2 Donde Conseguirlo.
1.1 Descripción.
Perl es un lenguaje hecho especialmente para escanear archivos de texto, extraer información de esos
archivos, e imprimir reportes basados en esa información. Es también un
lenguaje muy útil para muchas tareas de administración de sistemas. Este
lenguaje combina algunas de las mejores características de C, sed, awk, y sh. A diferencia de la
mayoría de las utilidades de UNIX, Perl no limita
arbitrariamente el tamaño de los datos (Si se tiene la suficiente memoria, Perl puede manejar el archivo entero como un solo string). Y las tablas de hash
usadas por los arreglos asociativos crecen lo suficiente para prevenir que se
degrade el desempeño. Perl utiliza técnicas
sofisticadas para encontrar patrones lo que le permite escanear
grandes cantidades de datos rápidamente. Aunque el Perl
está optimizado para escanear texto, puede también trabajar
con datos binarios, y puede hacer que archivos dbm se
vean como arreglos asociativos.
1.2 Donde Conseguirlo.
El Perl
es gratis , y se puede conseguir de :
Cualquier almacén de software de comp.sources.unix.
Algunos famosos servers
de almacén de archivos :
- uunet.uu.net 192.48.96.2
- tut.cis.ohio-state.edu
128.146.8.60
De su autor Larry
Wall
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 GID real del proceso.
$> 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;