Cursus Raku / Objecten, in- en uitvoer en excepties / Invoer en uitvoer / Externe programma’s uitvoeren 🆕
De omgeving
Elk programma wordt gestart met een verzameling
omgevingsvariabelen — benoemde waarden als HOME,
PATH of USER die het besturingssysteem levert.
In Raku zijn ze beschikbaar in de dynamische hash
%*ENV:
say %*ENV<HOME>; # the home directory, e.g. /home/annaJe leest een omgevingsvariabele door %*ENV met haar naam
te indexeren. Omdat het een gewone hash is, kun je ook nagaan of een
variabele gezet is, of haar wijzigen voor programma’s die je start:
%*ENV<GREETING> = 'Hello';
say %*ENV<GREETING>; # HelloEen sleutel in %*ENV zetten voegt hem toe aan de
omgeving die elk programma erft dat je daarna met run of
shell start, en zo geef je configuratie aan een
kindprogramma door:
%*ENV<GREETING> = 'Hello';
my $proc = run 'sh', '-c', 'echo $GREETING', :out;
say $proc.out.slurp(:close).chomp; # HelloDe variabele wordt in de omgeving van jouw programma gezet
voordat het kind gestart wordt, dus de shell die
run start heeft GREETING al in zijn eigen
omgeving en kan hem terugsturen. Elke variabele die je zo zet bereikt
elk programma dat je daarna start.
De twigil * vertelt je dat %*ENV een
dynamische variabele is, net als $*OUT uit het deel over
invoer en uitvoer. Een paar andere variabelen met een ster beschrijven
de wereld van het draaiende programma — @*ARGS bevat de
opdrachtregelargumenten, en $*PROGRAM-NAME is de naam van
het script zelf. Samen laten ze een programma de context begrijpen
waarin het gestart is.
Praktijk
Maak de 1 quiz over de inhoud van dit onderwerp.
Cursusnavigatie
← Quiz — Het Proc-object | Quiz — De omgeving →
💪 Of ga direct naar de oefeningen in deze
sectie.