The "twirling baton" is another simple progress indicator that may be more suited to large jobs with indeterminate ends. Here's a simple implementation that I wrote years ago, long before even finding this site:
BEGIN {
my @chars=('-','\\','|','/','-','\\','|','/');
my $step=0;
sub baton_start { $step=0 ; goto &baton_step }
sub baton_step { print STDERR $chars[$step++],"\b";
$step=0 if $step >=8 }
sub baton_end { print STDERR "\b "; }
}
I have used this in many one-off scripts and I generally just copy and paste it when needed, since it is so simple.