В Perl 5 можно легко имитировать выполнение скрипта с определенной временной меткой:
BEGIN {
*CORE::GLOBAL::time = sub () { $::time_mock // CORE::time };
}
use Test;
$::time_mock = 1545667200;
ok is-xmas, 'yay!';
$::time_mock = undef; # back to current time
И это работает глобально — каждый пакет, каждый метод, все, что использует time(), будет видеть отметку времени 1545667200. Что очень удобно для тестирования чувствительной ко времени логики.
Есть ли способ воспроизвести такое поведение в Perl 6?