-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathprogress.pm
More file actions
50 lines (42 loc) · 1.42 KB
/
progress.pm
File metadata and controls
50 lines (42 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use Time::HiRes qw(gettimeofday);
sub drawprogress($$$) {
my $d=shift;
my $t=shift;
my $st=shift;
my $ct=gettimeofday();
my $p=int(1000*$d/$t)/10;
my $n=int($p/5);
my $es=-1;
my $i;
if($d>$t) {
$d=$t;
}
if($d>0) {
$es = int(($ct-$st)*(($t-$d)/$d));
}
print STDERR "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
print STDERR "[";
for($i=0;$i<$n;$i++) {
print STDERR "*";
}
for($i=0;$i<20-$n;$i++) {
print STDERR ".";
}
printf STDERR "] %d/%d %.1f\% ",$d,$t,$p;
if($es > 0) {
if($es > 7200) {
print STDERR int($es/3600)."hr.";
} elsif($es > 120) {
print STDERR int($es/60)."min.";
} else {
print STDERR int($es)."sec.";
}
}
print STDERR " ";
}
sub eraseprogress() {
print STDERR "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
print STDERR " ";
print STDERR "\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b";
}
1;