progress bar in command line perl script

后端 未结 3 1185
时光取名叫无心
时光取名叫无心 2021-01-05 15:48

I am trying to print progress in % in command prompt. But it is not working properly.

I want to print the progress as :: Status 10% Completed when 20% will complete

相关标签:
3条回答
  • 2021-01-05 16:41

    Small modification to the original code: \n and \r are removed and added autoflush and "\033[G" and \033[J

    $|=1; #autoflush
    
    $count = 0;
    $total = 100;
    while ($count != $total) {
       $count++; 
       $per=($count/$total)*100; 
       print "\033[JStatus: ${per}% Completed."."\033[G"; # man console_codes, ECMA-48 CSI sequences, "CHA"
       sleep 1
     }  
    
    0 讨论(0)
  • 2021-01-05 16:44

    The module Term::ProgressBar seems to be able to do what you're after.

    Note, I haven't tried it.

    Edit Well, out of curiosity, I have now tried a small script:

    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);
    
    }
    

    It won't exactly print what you asked (eg Status nn% completed), instead, it does print a real progress bar, something like

      10% [=====                                              ]
    

    Nevertheless, it seems to most simple and straight forward solution.

    0 讨论(0)
  • 2021-01-05 16:53

    You can do something like this:

    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";
    
    0 讨论(0)
提交回复
热议问题