my @data = qw( 1 2 3 4 5); modo(); sub modo { # Do stuff, then reschedule myself. my $newdata = shift @data; if ( defined $newdata){ $MW->after($MILLISECOND_DELAY, [ \&modo, $newdata ] ); } }