Curso de Raku / Objetos, entrada/salida y excepciones / Entrada y salida / Ejecutar programas externos 🆕 / Exercises / Pase una variable a un proceso hijo
Solución: Pase una variable a un proceso hijo
Aquí tienes una posible solución para la tarea.
Código
my $file = 'notes.txt';
spurt $file, "one\ntwo\nthree\n";
%*ENV<NOTES> = $file;
my $proc = shell 'wc -l < "$NOTES"', :out;
say $proc.out.slurp(:close).trim;
unlink $file;🦋 Puedes encontrar el código fuente en el archivo read-env.raku.
Salida
3Comentarios
spurtcreanotes.txtcon tres líneas. Fijar%*ENV<NOTES>a su nombre pone el nombre del archivo en el entorno que heredará cualquier programa hijo.La orden de
shellhereda ese entorno, expande$NOTESanotes.txty alimenta con el archivo awc -l, que cuenta sus líneas. La redirección< "$NOTES"deja la salida reducida al número3, que capturamos con:outy limpiamos con trim.Por último, la limpieza se hace de vuelta en Raku con
unlink: no hace falta ninguna shell. Borrar el archivo es una simple operación del sistema de archivos, así que no hay motivo para lanzar otro proceso.