Buena mañana!

Lo siento si esto ha sido publicado antes, no podía encontrarlo. Sólo necesito un pequeño punto en la dirección correcta, esta es mi tarea y me siento que está casi hecho. Lo que quiero hacer es tomar los datos de los archivos en una carpeta diferente a la de donde se ejecuta el script, el proceso de los datos dentro de Perl, a continuación, imprimir la salida a otro directorio. Ahora tengo las dos partes de hecho, pero lo que me falla es que Perl no encuentra la ruta de acceso donde quiero guardar los archivos. Sólo sais «Ningún archivo o directorio con los nombres existe», pero no! Aquí es la parte de la secuencia de comandos para que:

my @files = <$ENV{HOME}/Docs/unprocessed/*.txt>;
my $path = "$ENV{HOME}/Docs/results";

<looping through @files, processing each file in the unprocessed folder...>

open (OUTFILE, $path . '>$file') or die $!;
print OUTFILE ""; # "" Is really the finished calculations from the loop, not important here.
close FILE;
close OUTFILE;

Apuesto a que es algo estúpido…

  • Gracias por las respuestas! use File::Basename; y open (OUTFILE, ">$path/" . basename($file)) Hizo el truco.
  • No hay necesidad de poner solved en el título.

1 Comentario

  1. 3

    Porque se mezcla el «escribir» token > con el nombre de archivo. Este:

    open (OUTFILE, $path . '>$file')

    Debe ser:

    open (OUTFILE, ">$path/$file")

    Usted también es probable que tengan a la franja de la .../Docs/unprocessed/ prefijo de su nombre de archivo:

    use File::Basename;
    
    open (OUTFILE, ">$path/" . basename($file))
    • Funciona! Un millón de gracias a Howie! Ahora mi bota tiene una cita con un determinado Perlmonk…
    • Tres argumento abrir sería mejor open (OUTFILE, '>', "$path/" . basename($file)) para protegerse de cosas raras en las variables.
    • Además de los tres-argumento-versión de open el uso de léxico filehandles sería aún mejor. open my $fh, '>' , '...' or die 'miserably';
    • ¿Alguna idea de cómo puedo añadir una cadena a basename($archivo)? Me gustaría añadir fecha y hora actuales y el nombre de archivo, así, guarda en $fecha.
    • Anexar: "$path/" . basename($file) . "-$date"
    • Gracias, he imaginado que fuera. También trabajó con "$path/" . $date . basename($file) pero he tenido que añadir un «_» en la final de los us $fecha de la cadena, de lo contrario, parecía bastante desagradable, así que no veo el punto de la «-» infromt de $fecha. ;>

Dejar respuesta

Please enter your comment!
Please enter your name here