Markus Laire wrote in perl.perl6.compiler :
>>     my $use_debug_mode = BEGIN { %*ENV{DEBUGME} ?? 1 :: 0 };
>
> According to S04 you'd use INIT block for that. INIT is run at run time, 
> ASAP. But BEGIN is run at compile time, ASAP.

Fair enough, makes sense. As long as BEGIN and CHECK blocks are run when
you evaluate code at run-time (which is not the case in perl 5 for CHECK
blocks currently)

> My example code:
>      use v6;
>      my $compile_begin_time = BEGIN { time() }
>      my $compile_end_time = CHECK { time() }
>      my $run_begin_time = INIT { time() }
>      my %compile_time_environment = BEGIN { %*ENV }
>      my %run_time_environment = INIT { %*ENV }
>
>
> (this list from http://dev.perl.org/perl6/synopsis/S04.html )
>
>        BEGIN {...}*      at compile time, ASAP
>        CHECK {...}*      at compile time, ALAP
>         INIT {...}*      at run time, ASAP
>          END {...}       at run time, ALAP
>        FIRST {...}*      at first block entry time
>        ENTER {...}*      at every block entry time
>        LEAVE {...}       at every block exit time
>         KEEP {...}       at every successful block exit
>         UNDO {...}       at every unsuccessful block exit
>         NEXT {...}       at loop continuation time
>         LAST {...}       at loop termination time
>          PRE {...}       assert precondition at every block entry
>         POST {...}       assert postcondition at every block exit
>        CATCH {...}       catch exceptions
>      CONTROL {...}       catch control exceptions

Reply via email to