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

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


Comment on Re: RE: A whirleygig for a progress indicator for scripts
Download Code
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 http://www.perlmonks.org/?node=File%20copy%20progress. 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 :).
    greets,
    Wire64

      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?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others musing on the Monastery: (16)
As of 2015-07-31 16:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (279 votes), past polls