sub init_tumble { my $every = shift || 0; my(@tumble) = ('-', '\\', '|', '/'); my $tsub = 0; my $count = 0; my $rs = sub { $count++; $saved_autoflush = STDOUT->autoflush; if($every) { return if $count % $every; } STDOUT->autoflush(1); print "$tumble[$tsub++]\b"; $tsub = 0 if $tsub > 3; STDOUT->autoflush($saved_autoflush); }; return $rs; } #### my $tumble = init_tumble(25) ... while(some condition) { $tumble->(); ... do some stuff ... }