# Twenty centuries of stony sleep # were vexed to nightmare by a rocking cradle. # And what rough beast, its hour come round at last # slouches towards Bethlehem to be born? # # The Second Coming # W.B. Yeats use constant { CENTURY => 3153600000 }; package stone; sub sleep (;$) { &CORE::sleep(shift); } package Cradle::Rocking; sub vex {}; package Yeats; Cradle::Rocking::vex( dest => 'Nightmare', subject => sub { stone::sleep CENTURY for (0 .. 19) } ); my %beasts; $beasts{'rough'} = [{ dest => 'Eire', mode => 'course', hour => 1 }, { dest => 'Innisfree', mode => 'amble', hour => 2}, { dest => 'Bethlehem', mode => 'slouch', hour => 3}, ]; (my $beast) = grep { $_->{dest} eq 'Bethlehem' && $_->{mode} eq 'slouch' } @{$beasts{'rough'}}; while ('Eternity') { last if (((localtime(time))[2] == $beast->{hour})); } bless $beast, 'Life';