Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery

Re: RE: A whirleygig for a progress indicator for scripts

by synistar (Pilgrim)
on Dec 08, 2003 at 22:15 UTC ( #313272=note: print w/replies, xml ) Need Help??

in reply to RE: A whirleygig for a progress indicator for scripts
in thread A whirleygig for a progress indicator for scripts

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

Replies are listed 'Best First'.
Re^3: A whirleygig for a progress indicator for scripts
by Wire64 (Initiate) on May 16, 2009 at 17:42 UTC
    Is there anyway i can use Whirley with File::Copy ?

    I want to show a progress meter (percentage) while moving a file.
    I found but that doesn't use File::Copy and dont know if it working for large files.
    Or can i do something like;

    my $sizetarget= (-s $destination); my $sizesource= (-s $source); my $percentage=""; while (move($source,$destination) || print "$!\n") { $sizetarget = (-s $destination); $percentage = ($sizetarget / $sizesource)*100; print "[$percentage\%]\r"; }
    hmm nope that doesnt work.. anyways you get my point.
    Hope anyone can give me an example or a hand :).

      No. From looking at the File::Copy source code, it provides no progress callback. You could try to override CORE::sysread and/or CORE::syswrite, which File::Copy uses in its inner loop. Or just do the progress based on the number of files.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://313272]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2020-10-22 22:11 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (230 votes). Check out past polls.