Raku-Kurs / Objekte, Ein- und Ausgabe und Ausnahmen / Ein- und Ausgabe / Standardströme / Exercises / Ausgabe und Fehler
Lösung: Ausgabe und Fehler
Hier ist eine mögliche Lösung der Aufgabe.
Code
my @data = 3, 5, 7;
my $sum = 0;
for @data -> $n {
$sum += $n;
$*ERR.say("running total: $sum");
}
$*OUT.say($sum);🦋 Du findest den Quellcode in der Datei output-and-error.raku.
Ausgabe
Am Bildschirm erscheinen beide Ströme — die Zwischenstände, dann das Endergebnis:
running total: 3
running total: 8
running total: 15
15Wird die Standardfehlerausgabe verworfen, bleibt nur die eigentliche Ausgabe:
$ raku output-and-error.raku 2>/dev/null
15Kommentare
$*OUTund$*ERRsind die Handles für die Standardausgabe und die Standardfehlerausgabe. Jeder hat seine eigene Methodesay.Jeder Durchgang der Schleife addiert die nächste Zahl und schreibt den Zwischenstand nach
$*ERR; nur die Endsumme geht nach$*OUT. Am Bildschirm sehen Fortschritt und Ergebnis gleich aus, sie laufen aber durch verschiedene Ströme — weshalb das Umleiten der Standardfehlerausgabe mit2>/dev/nullnur die abschließende15übrig lässt.