5. ENTRADA/SALIDA.


Los manejadores de archivos tienen su propio nombre característico, que generalmente están en mayúsculas para evitar confusiones. Los manejadores de archivos predefinidos son :

STDIN STDOUT STDERR

Mencionar un manejador de archivo entre los símbolos < y > hace que se lea la siguiente línea si se está trabajando con un escalar, todas las líneas si se trabaja con un arreglo; las líneas nuevas se dejan intactas.

		$linea = ;

@lineas = ;

< > significa TODOS los archivos que se proporcionan en la línea de comandos ( o en STDIN si no hay ninguno). Al usarlo de esta manera, $ARGV es el nombre de archivo actual.

Al usarlo en un ciclo WHILE, las líneas de entrada son automáticamente asignadas a la variable $_ .

Generalmente se itera un archivo manejando una sola línea a la vez, asignando a $_ cada vez y usándolo como operando default.

	while ( < > ) {

next if /^#/ ; # Saltarse los comentarios

s/bueno/malo/g ; # Sustituto global

print; # Imprime $_

}

Si no se usa el pseudo-archivo < >, se abre un manejador de archivos :

		open (PWD,		"/etc/passwd");

open (TMP, ">/tmp/foobar.$$");

open (LOG, ">>logfile");

open (TOPIPE, "| lpr");

open (FROMPIPE, "/usr/etc/netstat -a |");

Se puede también utilizar getc para E/S de un caracter y read para E/S cruda.

Se tiene acceso a llamadas eof, seek, close, flock, ioctl, fcntl y select para usarlas con MANEJADORES DE ARCHIVOS.

Se tiene acceso a llamadas mkdir, rmdir, chmod, chown, link, symlink, stat, rename y unlink para usarlas con NOMBRES DE ARCHIVOS.

Se puede pasar un manejador de archivo como parámetro para printf a menos que se quiera imprimir a STDOUT.

		printf LOG "%-8s %s : bits raros : %08x \n",

$program, &ctime, $bits ;

Se pueden ligar arreglos asociativos a archivos dbm con dbmopen( ).