I am seeking a way to provide a dynamic progress indicator by building the required parts of the indicator into a data structure of some kind before printing the entire structure to stdout.
The intention is that the data structure used for outputting the progress will be modified based on commandline options, for example the verbose option may provide additional data fields, and the quiet option may supress some fields.
I have the following code that does work, and I can convinently push the required fields onto the array as I process the options, but the processing of the array for printing feels clunky.
So I am looking for any suggestions from persons more enlightened than myself that might lead to a more elegant solution.
#!/usr/bin/perl use warnings; use strict; my $count=42; my $completed=6; my $progress_output=["\rProcessing: ",\$count," files to process ; ",\ +$completed," file completed\n"]; notify_progress(); $completed=7; notify_progress(); sub notify_progress { foreach (@$progress_output) { if (ref($_) eq 'SCALAR') { print $$_; } else { print $_; } } }
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |