$ perl -Mstrict -Mwarnings -e '
use Smart::Comments;
for (1 .. 500) { ### Running... done
qx{ls -l > /dev/null 2>&1};
}
'
####
#!/usr/bin/env perl
use strict;
use warnings;
my $CMD = q{ls -l > /dev/null};
for ([], [q{}], [q{dummy}], [$CMD, 10], [$CMD], [$CMD, 50]) {
eval {
run_with_progress(@$_);
};
warn $@ if $@;
}
sub run_with_progress {
print q{-} x 60, qq{\nStarting ...\n};
my ($cmd, $skip) = @_;
die q{Nothing to run!} unless $cmd;
$skip ||= 25; # Arbitrary
my @sails = map { "\b$_" } qw{- \ | /};
my $sail = 0;
{
local $| = 1;
print q{Running: };
for (0 .. 1000) {
system $cmd and die qq{'$cmd' failed! $? : $!};
print $sails[$sail++ % @sails] if not $_ % $skip;
}
}
print qq{\b*\nFinished.\n};
}
##
##
$ pm_text_spinner_ryo.pl
------------------------------------------------------------
Starting ...
Nothing to run! at ./pm_text_spinner_ryo.pl line 20.
------------------------------------------------------------
Starting ...
Nothing to run! at ./pm_text_spinner_ryo.pl line 20.
------------------------------------------------------------
Starting ...
Running: Can't exec "dummy": No such file or directory at ./pm_text_spinner_ryo.pl line 32.
'dummy' failed! -1 : No such file or directory at ./pm_text_spinner_ryo.pl line 32.
------------------------------------------------------------
Starting ...
Running: *
Finished.
------------------------------------------------------------
Starting ...
Running: *
Finished.
------------------------------------------------------------
Starting ...
Running: *
Finished.
##
##
sub run_with_progress {
use Smart::Comments;
### Starting ...
my ($cmd, $skip) = @_;
die q{Nothing to run!} unless $cmd;
$skip ||= 25; # Arbitrary
my @sails = map { ($_) x $skip } qw{- \ | /};
my $sail = 0;
for (0 .. 1000) { ### Running: $sails[$sail++ % @sails]
system $cmd and die qq{'$cmd' failed! $? : $!};
}
### Finished.
no Smart::Comments;
return;
}
##
##
$ pm_text_spinner_sc_spin.pl
### Starting ...
Nothing to run! at ./pm_text_spinner_sc_spin.pl line 22.
### Starting ...
Nothing to run! at ./pm_text_spinner_sc_spin.pl line 22.
### Starting ...
Running: - Can't exec "dummy": No such file or directory at ./pm_text_spinner_sc_spin.pl line 29.
'dummy' failed! -1 : No such file or directory at ./pm_text_spinner_sc_spin.pl line 29.
### Starting ...
### Finished.
### Starting ...
### Finished.
### Starting ...
### Finished.
##
##
sub run_with_progress {
print q{-} x 60, qq{\nStarting ...\n};
my ($cmd, $skip) = @_;
die q{Nothing to run!} unless $cmd;
$skip ||= 25; # Arbitrary
use Term::Spinner;
my $spinner = Term::Spinner::->new();
print q{Running: };
for (0 .. 1000) {
system $cmd and die qq{'$cmd' failed! $? : $!};
$spinner->advance() if not $_ % $skip;
}
$spinner->finish();
print qq{\nFinished.\n};
undef $spinner;
return;
}