Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Progress indicator

by mirod (Canon)
on Aug 20, 2001 at 14:08 UTC ( #106168=snippet: print w/ replies, xml ) Need Help??

Description:

I often run scripts that have to run for a while and that do not output anything. So I like to see how they are doing, if they are just sitting there waiting for something to happen, or maybe stuck in an infinite loop.

So I use this subroutine to display an indicator of how many times I have been through my main loop on STDOUT.

Its used this way:

  while(...)
    { # whatever you have to do
      progress();
    }

As I use in various situations the main loop can be run any time from a few hundred to several tens of thousand times, so you can pass a parameter or change the DEFAULT_STEP constant to display a dot for every n loops. After 10 dots a space is printed, and after 50 a new line (those values can also be changed).

One last thing: if you want to see the dots displayed as soon as they are generated don't forget to unbuffer the output, for example with $|=1;

Oh and if the features of this progress indicator are not what you are looking for, here is a list of previous nodes on that subject:

{ use constant DEFAULT_STEP => 100; # a DOT is printed every DEFAULT_S
+TEP call
  use constant LINE         => 50;  # nb of DOT per line      
  use constant BLOCK        => 10;  # a SPACE is printed after BLOCK D
+OTs
  use constant DOT          => '.'; # probably no need to change this
  use constant SPACE        => ' '; # probably no need to change this
  my( $i, $j);
  sub progress
    { my $step= shift || DEFAULT_STEP;
      $i++;
      if( $i == $step)
        { $i=0;
          print STDOUT DOT;
          $j++;
          unless( $j % BLOCK)
            { print STDOUT SPACE;
              if( $j == LINE)
                { $j=0;
                  print STDOUT "\n";
                }
            }
        }
    }
}
Comment on Progress indicator
Download Code
Re: Progress indicator
by RedDog (Pilgrim) on Aug 21, 2001 at 05:41 UTC

Back to Snippets Section

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: snippet [id://106168]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (10)
As of 2014-07-11 00:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    When choosing user names for websites, I prefer to use:








    Results (217 votes), past polls