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