$ cat t.pl my @files = qw/ a b c d e f g /; my $total_steps = int @files; my $step = 0; for my $file ( @files ){ $step ++; my $t = rand; $t *= 3 while $step / $total_steps - .01 > rand; print "$t\n"; sleep $t; print "\rStep $step / $total_steps\n"; select undef, undef, undef, 0.3; } print "Done\n"; $ perl t.pl 0.692567903622152 Step 1 / 7 1.5466213811873 Step 2 / 7 1.80846504071083 Step 3 / 7 0.564190293187867 Step 4 / 7 2.93620287911233 Step 5 / 7 0.822297130956301 Step 6 / 7 1.016940946008e+38 ^C