Bienvenido a los foros de Perl en Español, andratec.
Me parece que has copiado mal el código, porque en la línea 9 estás usando la variable $file, pero esa variable la defines en la línea 11.
Si ejecutas el código con la opción -c, el propio Perl te lo dice:
Using bash Syntax Highlighting
$ perl -c kk.pl
CGI::Carp will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at kk.pl, line 5.
[Sun Nov 16 20:35:04 2014] CGI.pm: CGI will be removed from the Perl core distribution in the next major release. Please install it from CPAN. It is being used at kk.pl, line 6.
[Sun Nov 16 20:35:04 2014] kk.pl: "my" variable $ruta masks earlier declaration in same scope at kk.pl line 9.
Status: 500
Content-type: text/html
<h1>Software error:</h1>
<pre>Global symbol "$file" requires explicit package name at kk.pl line 9.
Global symbol "$file" requires explicit package name at kk.pl line 9.
kk.pl had compilation errors.
</pre>
<p>
For help, please send mail to this site's webmaster, giving this error message
and the time and date of the error.
</p>
[Sun Nov 16 20:35:04 2014] kk.pl: Global symbol "$file" requires explicit package name at kk.pl line 9.
[Sun Nov 16 20:35:04 2014] kk.pl: Global symbol "$file" requires explicit package name at kk.pl line 9.
[Sun Nov 16 20:35:04 2014] kk.pl: kk.pl had compilation errors.
Coloreado en 0.004 segundos, usando
GeSHi 1.0.8.4
Programar con copia/pega... tiene estos resultados.
Por estos foros
hay más hilos que hablan de cómo leer archivos CSV con Perl.