日向夏特殊応援部隊

俺様向けメモ

Time::Progressでプログレスバーを実現する。

ひょっとしたら役に立つかもしれないけど、基本的には無駄な知識です。あしからず。

サンプルソース

#!/usr/bin/perl

use strict;
use warnings;

use Time::Progress;

my @actions = qw(setup prepare accept finalize);
my $progress = Time::Progress->new;

$progress->attr(min => 0, max => 100);

print "Sample Progress Bar: \n";

{
    local $| = 1;
    for (my $c = 0; $c <= 100; $c += 5) {
        if ($c % 25 == 0) {
            my $action = $actions[($c / 25) - 1];
            print " " x 100 . "\r";
            print $progress->report("progress: %40b %p, eta: %E min, Starting $action\r", $c);
        }
        else {
            print " " x 100 . "\r";
            print $progress->report("progress: %40b %p, eta: %E min\r", $c);
        }
        sleep 1;
    }
}

$progress->stop;

print "\n";
print $progress->elapsed_str;

表示サンプル

$ perl progress.pl 
Sample Progress Bar: 
progress: ######################################..  95.0%, eta:   0:01 min                  

どう見ても

ネタです。