next up previous index
Siguiente: Ejercicios con llamadas al sistema operativo Subir: Fundamentos de Perl (1) Anterior: Formateo de datos   Índice de Materias

Llamadas al sistema operativo

Para pedir al sistema operativo que ejecute otros programas desde un programa en Perl podemos hacerlo de varias maneras. Al hacerlo estamos en realidad llamando al sistema operativo y esperando su respuesta:

## insertando el comando y sus parámetros entre dos `acentos graves`

my $resultado = `ls -l *.fas`;  # muestra todos los archivos FASTA del directorio actual

$resultado = `df -k`;           # muestra el espacio libre en los sistemas de ficheros de tu sistema

$resultado = `cat archivo.pdb | grep ATOM`;  # imprime las líneas 'ATOM' de un PDB

## usando la función system()

$resultado = system("cat archivo.pdb | grep ATOM");

$resultado = system("pwd");                          # devuelve el directorio actual

$resultado system("zcat archivo.fas.gz");            # descomprime un archivo y muestra el contenido

Perl incorpora todo un conjunto de funciones que nos permiten interaccionar con el sistema operativo, que podéis ver íntegro en la guía de referencia de Perl. Yo destacaría:

chdir $otroDir;   # cambia de directorio durante la ejecución de un programa
kill $IDproceso;  # termina otros procesos que hayas creado anteriormente
sleep $segundos;  # para temporalmente la ejecución del programa que la invoca

Hay otra manera muy útil de ejecutar otros programas desde Perl y directamente procesar su salida, usando las tuberías '|' (pipes) de UNIX*. De esta manera, la salida generada por el proceso ejecutado es vista desde Perl como un archivo. Veamos ejemplos:

open(BLAST,"blastpgp -i secuencia.fas |") || die "no puedo ejecutar blastpgp -i secuencia.fas\n";
while(<BLAST>)
{
	# aquí lees la salida de BLAST directamente, sin guardarla en un archivo
}
close(BLAST);


open(ZCAT,"zcat gran_archivo.gz |") || die "no puedo descomprimir gran_archivo.gz\n";
while(<ZCAT>)
{
	# aquí voy leyendo el contenido de gran_archivo, pero el archivo sigue comprimido en el sistema 
	
}
close(ZCAT);



Subsecciones
next up previous index
Siguiente: Ejercicios con llamadas al sistema operativo Subir: Fundamentos de Perl (1) Anterior: Formateo de datos   Índice de Materias
Bruno Contreras Moreira 2007-06-15