Насколько я понял, речь вообще идёт не о progress-баре, а о выводе сотояния в одном месте консоли, так как Progressbar невольно ассоциируется с GUI.
Если я правельно понял, то нужен не последовательный вывод: 1, 2, 3, 4, 5, .... 100
А что бы все эти числа показывались в одном месте, каждое последующее, становится на место предидущего. Что-то типа этого:
Код | #!/usr/bin/perl -w use strict; use Win32::Console; use Time::HiRes; use constant PERCENT_100 => 1000; # 100%
my $console = new Win32::Console(STD_OUTPUT_HANDLE); $console->Cls();
for (1..PERCENT_100) { my $posx = 10; my $posy = 5; $_ = "$_ / " . int($_ / PERCENT_100 * 100) . "%"; for my $color ($FG_YELLOW, $FG_GREEN, $FG_LIGHTRED, $FG_BLUE, $FG_WHITE) { my $attr = (chr($color|$BG_BLACK) x length($_)); $console->WriteAttr($attr,$posx,$posy); $console->WriteChar($_, $posx, $posy); $posx += 5; $posy += 2; } Time::HiRes::sleep(0.1); }
$console->Display();
|
|