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; }