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
$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( ).