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

3

Opmerkingen

  1. spurt maakt notes.txt met drie regels aan. %*ENV<NOTES> op die naam zetten plaatst de bestandsnaam in de omgeving die elk kindprogramma erft.

  2. Het shell-commando erft die omgeving, expandeert $NOTES naar notes.txt en voert het bestand aan wc -l, dat de regels telt. De omleiding < "$NOTES" beperkt de uitvoer tot alleen het getal 3, dat we met :out opvangen en trimmen.

  3. 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.

Cursusnavigatie

← Geef een variabele door aan een kindproces   |   Excepties →