{ my @list; sub set { $_ = shift @list for @_; } sub from (&$){ my ($c_list,$c_loop) = @_; @list= $c_list->(); LOOP: while (@list) { $c_loop->(); } } sub loop (&){ $_[0] } } sub xlast{ no warnings 'exiting'; last LOOP; }