in reply to Re^2: Super simple progress
in thread Super simple progress
Fair enough, so you need a sort of "I'm still doing something" row of dots that emerges as work progresses.
It's a little unfortunate how File::Copy::Recursive implements recursion in dircopy. I mean it works great, but it's hard to hook into. However, the dircopy subroutine calls fcopy which is easier to wrap. So this seems to work as I had hoped:
#!/usr/bin/env perl use strict; use warnings; use File::Copy::Recursive qw(dircopy); use Hook::WrapSub qw(wrap_subs); use IO::Handle; sub after_dircopy { print '.'; STDOUT->flush; } wrap_subs sub {}, 'File::Copy::Recursive::fcopy', \&after_dircopy; dircopy('/tmp/test1', '/tmp/test2'); print "\n";
I'm wrapping the fcopy function, which dircopy calls by adding a sub that fires off after each fcopy call. The wrapper prints a dot and flushes STDOUT.
One warning: This depends on an implementation detail of dircopy. There are no guarantees the module's author couldn't change how dircopy works, rendering this broken.
Dave
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^4: Super simple progress
by bigal_george (Acolyte) on Dec 30, 2019 at 17:49 UTC | |
by davido (Cardinal) on Dec 30, 2019 at 18:45 UTC | |
Re^4: Super simple progress
by bigal_george (Acolyte) on Dec 30, 2019 at 20:09 UTC | |
Re^4: Super simple progress
by bigal_george (Acolyte) on Dec 30, 2019 at 22:04 UTC | |
by davido (Cardinal) on Dec 31, 2019 at 06:28 UTC |
In Section
Seekers of Perl Wisdom