Hace un par de dí­as me encontré en la situación de leer datos de un fichero en formato binario. Este tipo de ficheros, al contrario que uno de texto, la separación no viene dada mediante saltos de lí­nea (prácticamente todos los lenguajes de programación tiene funciones para leer lí­nea a lí­nea), sino que o bien se tiene una cabecera donde se indica el tamaño y formato de la información o, como es mi caso, tení­a que leer en bloques de 32 caracteres (16 palabras de dos caracteres, es decir, 16 palabras de 16 bits).

Para hacer esto con Perl, es tan sencillo como iniciar el método binario en el fichero mediante binmode.

El programa es similar a este (en $filein tenemos el nombre del fichero):
open INF, $filein
or die "\nNo se puede abrir $filein para leer: $!\n";
# Activamos el modo binario para el fichero
binmode INF
# Leemos 32 bytes y los metemos en $buffer
while (read INF, $buffer, 32) {
# Aquí­ trabajamos con los datos, en mi caso, 32 bytes
}
close INF
or die "No se ha podido cerrar $fiein: $!\n";

Realmente sencillo (y rápido).