Quick actions

cmd+k|ctrl+k

Navigation

Languages

Simple logging with dynamic scoping

Snippet info

Language

Raku

Visibility

unlisted

Author

rightfold

Created

2019-07-19T08:20:46Z

Updated

2019-07-19T08:20:46Z

sub log($msg) { &*log($msg); }

sub add-numbers($x, $y) {
    log("Adding $x and $y");
    $x + $y;
}

sub multiply-numbers($x, $y) {
    log("Multiplying $x and $y");
    $x * $y;
}

sub my-program($x, $y) {
    say add-numbers($x, $y);
    say multiply-numbers($x, $y);
}

sub MAIN() {
    my &*log;

    say "\n", 'No logging at all.';
    &*log = -> $msg { };
    my-program(1, 2);

    say "\n", 'Log only additions (filtering).';
    &*log = { .say if m/Adding/ };
    my-program(1, 2);

    say "\n", 'Log in all caps.';
    &*log = { .uc.say };
    my-program(1, 2);

    say "\n", 'Log all messages.';
    &*log = &say;
    my-program(1, 2);
}
INFO