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 }