explorer escribiste:Estás entubando la salida de cat a la entrada estándar de perl, así que deberás de usar <> (<STDIN>).
Para poner esto más claro .. con <STDIN> lees del input estándart. Que significa del pipe
cat blah.txt | ./programa.pl
o del archivo mandado al stdin del proceso
./programa.pl < blah.txt
o del humano que está delante del compu. En el primero caso cada ves que acabas de leer un archivo obtienes un undef y si sigues a leer Perl abres el archivo siguiente.
Con <> lees de los archivos incluidos cuando lanzas la programa
./programa.pl archivo1.txt archivo2.txt
o del pipe o archivo mandado al stdin o el humano.