命令行perl脚本中的进度条

raj*_*raj 5 perl perl-module

我试图在命令提示符下打印%的进度.但它不能正常工作.

我想将进度打印为::状态10%已完成,当20%将完成时,它将显示状态20%已完成在同一位置不在新行中.请你帮助我好吗.

码::

$count++;
$per=($count/$total)*100;
print "\nStatus:  $per Completed.\r";
sleep 1;
Run Code Online (Sandbox Code Playgroud)

Ren*_*ger 16

模块Term :: ProgressBar似乎能够完成你所追求的目标.

请注意,我还没试过.

编辑嗯,出于好奇,我现在尝试了一个小脚本:

use warnings;
use strict;

use Term::ProgressBar;

my $total = 50;
my $progress_bar = Term::ProgressBar->new($total);


for my $i (1 .. $total) {

  sleep (1);

  $progress_bar->update($i);

}
Run Code Online (Sandbox Code Playgroud)

它不会完全打印你所要求的内容(例如Status nn% completed),相反,它会打印一个真正的进度条,例如

  10% [=====                                              ]
Run Code Online (Sandbox Code Playgroud)

尽管如此,它似乎是最简单直接的解决方案.


chr*_*lck 4

你可以这样做:

use strict;
use warnings;

use Time::HiRes qw(usleep);
local $| = 1;

my @nums = 1 .. 20;

foreach my $c (@nums) {
  print "$c";
  usleep(100000);
  print ("\b" x length($c));
}
print "\n";
Run Code Online (Sandbox Code Playgroud)