Comment mettre à jour un affichage de progression sur une application de ligne de commande Perl?
-
07-07-2019 - |
Question
J'ai un petit script Perl (sous Windows) qui vérifie pour moi certains fichiers afin de m'aider dans mes tâches quotidiennes. Au moment où il imprime quelque chose comme ...
0%
25%
50%
75%
Complete
Mais je me souviens de scripts que j'avais utilisés par le passé et qui n'imprimaient pas la progression ligne par ligne, mais mettaient à jour le résultat affiché, probablement en déplaçant le curseur vers l'arrière et en surimprimant les éléments. était là.
Quelqu'un sait quelle magie est requise? La portabilité n'est pas importante pour moi, le script est assez jetable.
La solution
En plus des autres réponses, \ r reviendra au début de la ligne en cours
Autres conseils
Vous pouvez utiliser curses et faire une belle barre de progression.
MODIFIER : Ou faire quelque chose comme ça:
print "##### [ 10%]\r";
# Do something
print "########## [ 20%]\r";
# Do something else
print "############### [ 30%]\r";
# Do some more
# ...
# ...
# ...
print "##################################### [100%]\n";
print "Done.\n";
Si vous avez besoin de faire quelque chose en Perl, il est très probable que quelqu'un l’ait fait et l’a chargé sur CPAN. Consultez certains des modules contenant " progrès " en leur nom .
Vous pourriez être intéressé par les Commentaires intelligents . Ce serait probablement plus facile que de coder vos propres barres de progression.
Vous devriez pouvoir imprimer un caractère de retour arrière '\ b' pour déplacer le curseur vers l'arrière afin de pouvoir écraser ce que vous avez imprimé précédemment.
Je ne sais pas si cela fonctionne en Perl, mais en C / C ++, vous pouvez utiliser
\bpour un retour arrière. En utilisant plusieurs de ces options, vous pouvez déplacer le curseur pour écraser les anciennes valeurs.