Sí, suponiendo que los archivos son leídos en la línea 23, el problema estaría en la exp. reg.
Puedes poner en la línea 24 esta línea para verificar que, efectivamente, hemos leído el contenido del archivo:
Using perl Syntax Highlighting
say "Leídos ", length($tex), " bytes del archivo $archivo";
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
¿Puedes adjuntar uno de esos archivos, quitándole antes todas las líneas no interesantes? Yo he hecho pruebas con archivos siguiendo el formato que has descrito, y me funciona, pero no sé si habrá alguna condición más. Por ejemplo, fallará si \begin o \end no están en la primera columna del archivo.
Consultas:
1- autodie hace un die() en muchas operaciones, pero no en todas. Por defecto, en los open, close, print, say... pero no en en resto de condiciones. La línea 8 es la comprobación de una condición. Y si falla, queremos que muera (en este caso, podría ser un comportamiento distinto en otros casos)
2- No, porque son cadenas literales de un print(). Incluso les he puesto comillas simples a 'EOH'. Eso indica que son literales (tal cual son)
3- El Perl que trae el sistema (y sus módulos) hay que actualizarle usando siempre el gestor de paquetes del sistema (
yum, no
cpan). El objetivo es usar
cpan lo menos posible. Solo cuando un módulo no esté soportado directamente por el gestor de paquetes, entonces sí que usaremos
cpan.
En los últimos años, ya existen herramientas para trabajar de forma completamente independiente del Perl del sistema, y de los módulos instalados. Con cosas como
perlbrew puedes tener y gestionar uno o más versiones de Perl en tu propio directorio personal. Y su colección particular de módulos.