my $i = 0; my @spinner = ("|\r", "/\r", "-\r", "\\\r"); while (<>) { # or any other looping structure print STDERR $spinner[$i]; $i = $i++ % @spinner; # do stuff } #### sub spinner { my $i; my @chars = defined @_ ? @_ : ("|\r", "/\r", "-\r", "\\\r"); return sub { "$chars[$i++ % @chars]" }; } my $spinner = spinner(); while (<>) { print STDERR $spinner->(); # do stuff }