Primero, decir que sigues insistiendo en poner '<' y '>' donde no debes.
Esto es lo correcto:
Using perl Syntax Highlighting
Luego se hace un opendir de ese directorio, y lo que te devuelve readdir es el nombre de los ficheros DENTRO del directorio, pero SIN la ruta completa a los ficheros.
Un ejemplo. Si el directorio es 'C:/directoriodeprueba', y dentro de ese directorio hay un fichero que se llama 'proceso.PGX', entonces readdir() nos devolverá 'proceso.PGX'.
Ahora bien, si ese nombre de fichero se lo damos a stat(), la función intentará buscar el fichero en el directorio de trabajo del programa, o dicho de otra manera, en el directorio desde donde hemos arrancado el programa. Si ese directorio no era 'C:/directoriodeprueba', entonces stat() no encontrará el fichero.
Soluciones: 1) hacer un chdir() a $dir antes de nada, para ponernos en el mismo directorio donde están los ficheros de los que queremos sacar sus stat(). Y, otra forma, 2) agregar $dir al argumento que le pasamos a stat():
Using perl Syntax Highlighting
De esta segunda manera, le estamos dando a stat() la ruta completa al $fichero, y ya podrá encontrarlo.
Ahora corrijo el código que publiqué. Recuerda que tu también puedes reeditar tus mensajes, por lo que no necesitas enviar tu programa en cada publicación.
Para la segunda línea, estás intentando usar las funciones definidas en File::stat o File::Stat. Y esos módulos no los hemos cargado.