I was bored, so here's a
tie version:
package Status;
sub TIESCALAR {
my $c = shift;
my @v = @_;
@v = ('|', '/', '-', '\\') unless @v;
bless { vals => \@v, status => 0 }, $c;
}
sub FETCH { $_[0]->{status} = ($_[0]->{status} + 1) % scalar @{ $_[0]-
+>{vals} }; return $_[0]->{vals}[ $_[0]->{status} ] }
package main;
$| = 1;
tie $s, 'Status';
while (1) {
print $s;
select(undef,undef,undef,0.1);
print "\r" x 40;
}
Just pass in the sequence when tying:
tie $status, 'Status', qw( - + | + );
or let it default to the one you specified above.
[ ar0n ]