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
15

Wird die Standardfehlerausgabe verworfen, bleibt nur die eigentliche Ausgabe:

$ raku output-and-error.raku 2>/dev/null
15

Kommentare

  1. $*OUT und $*ERR sind die Handles für die Standardausgabe und die Standardfehlerausgabe. Jeder hat seine eigene Methode say.

  2. 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 mit 2>/dev/null nur die abschließende 15 übrig lässt.

Kursnavigation

Ausgabe und Fehler   |   Eine Warnung mit note