Curso de Raku / Objetos, entrada/salida y excepciones / Entrada y salida / Flujos estándar / Exercises / Salida y error

Solución: Salida y error

Aquí tienes una posible solución para la tarea.

Código

my @data = 3, 5, 7;

my $sum = 0;
for @data -> $n {
    $sum += $n;
    $*ERR.say("running total: $sum");
}

$*OUT.say($sum);

🦋 Puedes encontrar el código fuente en el archivo output-and-error.raku.

Salida

En la pantalla aparecen los dos flujos: primero los totales acumulados y después el resultado final:

running total: 3
running total: 8
running total: 15
15

Si se descarta el error estándar, solo queda la salida real:

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

Comentarios

  1. $*OUT y $*ERR son los manejadores de la salida estándar y del error estándar. Cada uno tiene su propio método say.

  2. Cada vuelta del bucle añade el número siguiente y escribe el total acumulado en $*ERR; solo la suma final va a $*OUT. En la pantalla el progreso y el resultado se parecen, pero viajan por flujos distintos, y por eso redirigir el error estándar con 2>/dev/null deja únicamente el 15 final.

Salida y error   |   Un aviso con note