Estoy haciendo un pequeño programa y no sé por qué cuando solicito un dato por consola me indica que no puede acceder al archivo que le indico, copiando y pegando la ruta en la consola. En cambio, cuando le indico la ruta absoluta del archivo como se muestra en el primer bloque de código, funciona.
Cabecera:
Using perl Syntax Highlighting
- require 'C:\Users\Paco\Desktop\Recursos\perl\libreria.pm';
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Funciona la llamada:
Using perl Syntax Highlighting
- print "\nIndica la ruta a testar:";
- $ruta=<STDIN>;
- testFile('C:\Users\Paco\Desktop\Recursos\perl\prueba.log');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
No funciona la llamada:
Using perl Syntax Highlighting
- print "\nIndica la ruta a testar:";
- $ruta=<STDIN>;
- testFile($ruta);#Este metodo se encuentra dentro de libreria.pm
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Funcion Testlib:
Using perl Syntax Highlighting
- sub testFile {
- my $filename = $_[0];
- open( my $fh, "<", $filename )
- or die "Could not open file '$filename' $!"; #linea 520
- while ( my $row = <$fh> ) {
- chomp $row;
- if ( defined $row && $row ne "" ) {
- test( $row, 1 );
- }
- }
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
- sub testFile {
- my $filename = shift @_;
- print "\nFilename=>$filename\n";
- open( my $fh, "<", $filename )
- or die "Could not open file '$filename' $!"; #linea 520
- while ( my $row = <$fh> ) {
- chomp $row;
- if ( defined $row && $row ne "" ) {
- test( $row, 1 );
- }
- }
- }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Error:
Using bash Syntax Highlighting
- Could not open file 'C:\Users\Paco\Desktop\Recursos\perl\prueba.log
- ' Invalid argument at C:\Users\Paco\Desktop\Recursos\perl\libreria.pm line 520, <STDIN> line 1.
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
No sé qué estoy haciendo mal, he comprobado la variable al llegar al método y es capaz de mostrarla pero no la procesa.
Muchas gracias. Un saludo. Sigo investigando.
Actualizo
He conseguido hacerlo funcionar pero no entiendo por qué no funcionaba.
Using perl Syntax Highlighting
- open(my $fh, "<$filename")
- or die "Could not open file '$filename' $!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
He probado varios que no sé por qué no funcionan, indica que es por el parámetro pero yo veo que llega bien la ruta a la función:
Using perl Syntax Highlighting
- open(my $fh, "<","$filename")
- or die "Could not open file '$filename' $!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Using perl Syntax Highlighting
- open(my $fh, '<',"$filename")
- or die "Could not open file '$filename' $!";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4