Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Ein- und Ausgabe / Externe Programme ausführen 🆕 / Exercises / Übergeben Sie eine Variable an einen Kindprozess
Lösung: Übergeben Sie eine Variable an einen Kindprozess
Hier ist eine mögliche Lösung der Aufgabe.
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;🦋 Du findest den Quellcode in der Datei read-env.raku.
Ausgabe
3Kommentare
spurtlegtnotes.txtmit drei Zeilen an.%*ENV<NOTES>auf ihren Namen zu setzen legt den Dateinamen in die Umgebung, die jedes Kindprogramm erbt.Der
shell-Befehl erbt diese Umgebung, ersetzt$NOTESdurchnotes.txtund reicht die Datei anwc -lweiter, das ihre Zeilen zählt. Die Umleitung< "$NOTES"beschränkt die Ausgabe auf die bloße Zahl3, die wir mit:outauffangen und trimmen.Das Aufräumen geschieht schließlich wieder in Raku mit
unlink— keine Shell nötig. Eine Datei zu löschen ist eine schlichte Dateisystemoperation, es gibt also keinen Grund, dafür einen weiteren Prozess zu starten.
Kursnavigation
← Übergeben Sie eine Variable an einen Kindprozess | Ausnahmen →