Cursus Raku / Objecten, in- en uitvoer en excepties / Invoer en uitvoer / Externe programma’s uitvoeren 🆕 / Exercises / Geef een variabele door aan een kindproces
Oplossing: Geef een variabele door aan een kindproces
Hier is een mogelijke oplossing voor de taak.
Code
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;🦋 Je kunt de broncode vinden in het bestand read-env.raku.
Uitvoer
3Opmerkingen
spurtmaaktnotes.txtmet drie regels aan.%*ENV<NOTES>op die naam zetten plaatst de bestandsnaam in de omgeving die elk kindprogramma erft.Het
shell-commando erft die omgeving, expandeert$NOTESnaarnotes.txten voert het bestand aanwc -l, dat de regels telt. De omleiding< "$NOTES"beperkt de uitvoer tot alleen het getal3, dat we met:outopvangen en trimmen.Het opruimen gebeurt ten slotte weer in Raku met
unlink— geen shell nodig. Een bestand verwijderen is een gewone bewerking op het bestandssysteem, dus is er geen reden om daar nog een proces voor te starten.