Taking it one step further here is a repackage of btrott's version that takes an argument to choose from an array of weird spinners.
# main
my $whirley = Whirley->new(1);
while (1) {
sleep 1;
print STDERR "please wait: ", $whirley->(), "\r";
}
package Whirley;
sub new {
my $type = shift;
my $number = shift;
my $class = ref $type || $type;
my $WHIRLEY_COUNT = -1;
my @whirleyhash = (
[qw(- \ | / )],
[map chr, qw/32 176 177 178 219 178 177 176/],
[qw(>--- ->-- -->- ---> ---* --- ---< --<- -<-- <--- *---)],
[qw(_o_ \o/ _O_ \O/)],
[qw/. .o .oO .oO(zzz) .oO(ZZZ) /],
[ '(^_^ )','( ^_^)'],
[ '(^_^ )','( ^_^)','( -_-)', '(-_- )' ]
);
my @whirley = @{$whirleyhash[$number]};
my $self = sub {
$WHIRLEY_COUNT = 0 if ++$WHIRLEY_COUNT == @whirley;
return $whirley[$WHIRLEY_COUNT];
};
bless $self, $class;
}
|