Corso di Raku / Oggetti, input/output ed eccezioni / Input e output / Eseguire programmi esterni 🆕 / Exercises / Passate una variabile a un processo figlio
Soluzione: Passate una variabile a un processo figlio
Ecco una possibile soluzione del compito.
Codice
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;🦋 Trova il programma nel file read-env.raku.
Output
3Commenti
spurtcreanotes.txtcon tre righe. Impostare%*ENV<NOTES>al suo nome mette il nome del file nell’ambiente che qualunque programma figlio erediterà.Il comando
shelleredita quell’ambiente, espande$NOTESinnotes.txte dà in pasto il file awc -l, che ne conta le righe. La redirezione< "$NOTES"riduce l’output al solo numero3, che catturiamo con:oute ripuliamo con trim.Infine la pulizia avviene di nuovo in Raku con
unlink— nessuna shell necessaria. Cancellare il file è una semplice operazione sul file system, quindi non c’è motivo di lanciare un altro processo per farlo.