[PERL]-Afficher au même endroit sur la page
Résolu/Fermé
blux
Messages postés
25255
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 septembre 2023
-
22 mai 2006 à 15:15
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 23 mai 2006 à 15:48
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 23 mai 2006 à 15:48
A voir également:
- [PERL]-Afficher au même endroit sur la page
- Supprimer une page word - Guide
- Traduire une page web - Guide
- Remettre l'ecran a l'endroit - Guide
- Créer une page facebook - Guide
- Page d'accueil iphone - Guide
9 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
22 mai 2006 à 16:52
22 mai 2006 à 16:52
Salut,
comment afficher (dans une console en mode texte) un compteur qui reste au même endroit à l'affichage ?
Je ne suis pas sur d'avoir compris ta demande. Veux-tu détailler s'il te plaît?
lami20j
comment afficher (dans une console en mode texte) un compteur qui reste au même endroit à l'affichage ?
Je ne suis pas sur d'avoir compris ta demande. Veux-tu détailler s'il te plaît?
lami20j
blux
Messages postés
25255
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 septembre 2023
3 342
22 mai 2006 à 17:18
22 mai 2006 à 17:18
Très simple :
Dans une session telnet (en mode texte), je lance un script :
dans ce script, j'ai un certain nombre de données à traiter :
- je n'en connais le nombre qu'avant de rentrer dans ma boucle
- pour chaque donnée, j'ai un traitement à faire, à base de tri, de manip de tableaux... donc une boucle assez longue
J'aimerais donc que s'affiche un compteur qui se décrémente à chaque passage dans ma boucle. Mais je ne veux aucun saut de ligne, ni quoi que ce soit...
J'avais mis des . à l'affichage (sans cr/lf), mais c'est pas cool, car on ne sait pas combien de temps ça dure. Je souhaite donc mettre un compteur en temps réel (sachant que je n'ai pas d'affichage dans ma boucle qui pourrait parasiter les résultats). Mais peu m'importe l'endroit où c'est affiché, du moment que ça se récrit par-dessus...
C'est plus clair ?
Dans une session telnet (en mode texte), je lance un script :
dans ce script, j'ai un certain nombre de données à traiter :
- je n'en connais le nombre qu'avant de rentrer dans ma boucle
- pour chaque donnée, j'ai un traitement à faire, à base de tri, de manip de tableaux... donc une boucle assez longue
J'aimerais donc que s'affiche un compteur qui se décrémente à chaque passage dans ma boucle. Mais je ne veux aucun saut de ligne, ni quoi que ce soit...
J'avais mis des . à l'affichage (sans cr/lf), mais c'est pas cool, car on ne sait pas combien de temps ça dure. Je souhaite donc mettre un compteur en temps réel (sachant que je n'ai pas d'affichage dans ma boucle qui pourrait parasiter les résultats). Mais peu m'importe l'endroit où c'est affiché, du moment que ça se récrit par-dessus...
C'est plus clair ?
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
22 mai 2006 à 19:32
22 mai 2006 à 19:32
Salut,
mais je suis obligé de mettre un test pour savoir combien j'ai affiché de car et mettre le nombre de \b qui va bien
Ce n'est pas grave pour compter les \b
c'est ça que tu veux?
mais je suis obligé de mettre un test pour savoir combien j'ai affiché de car et mettre le nombre de \b qui va bien
Ce n'est pas grave pour compter les \b
c'est ça que tu veux?
#!/usr/bin/perl use warnings;use strict; my $c =0; while (1) { print "\b" x length($c); print "$c"; $c++; last if $c == 100000; } print "\n";lami20j
blux
Messages postés
25255
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 septembre 2023
3 342
23 mai 2006 à 10:28
23 mai 2006 à 10:28
Voui, presque, sauf que si on fait un décrément, il y a toujours des chiffres affichés à droite quand on change de longueur de compteur...
J'y tourne dans tous les sens, je n'y arrive pas : insertion de blanc après le compteur pour effacer les zéros (blancs qu'il faudra ôter...)...
Je crois que je vais formater mon compteur sur une longueur fixe et compléter à gauche par des zéros, ça sera plus facile...
J'y tourne dans tous les sens, je n'y arrive pas : insertion de blanc après le compteur pour effacer les zéros (blancs qu'il faudra ôter...)...
Je crois que je vais formater mon compteur sur une longueur fixe et compléter à gauche par des zéros, ça sera plus facile...
printf("%04d", $a); print "\b\b\b\b";
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
23 mai 2006 à 11:46
23 mai 2006 à 11:46
Salut,
sauf que si on fait un décrément
C'est normal puisque le \b n'efface pas les caractères, il fait seulement un retour en arrière.
Une solution c'est comme tu dit avec l'ajoute des zéros tant que tu obtiens ce que tu veux.
lami20j
sauf que si on fait un décrément
C'est normal puisque le \b n'efface pas les caractères, il fait seulement un retour en arrière.
Une solution c'est comme tu dit avec l'ajoute des zéros tant que tu obtiens ce que tu veux.
lami20j
blux
Messages postés
25255
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
20 septembre 2023
3 342
23 mai 2006 à 12:41
23 mai 2006 à 12:41
Ben voui, mais depuis le début, je dis que veux décrémenter ;-)
Merci bien de tes explications.
Merci bien de tes explications.
[Dal]
Messages postés
6111
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
18 septembre 2023
1 063
23 mai 2006 à 14:20
23 mai 2006 à 14:20
Salut,
Teste quand même si tu n'as pas le module Term::Cap, qui est présent sur toutes mes installations de Perl (même les minimales - il semble que ce module soit utilisé par le débogueur Perl). Tu as une fonction Tgoto, qui place le curseur à l'écran sur des coordonnées.
Un exemple là :
https://docstore.mik.ua/orelly/perl/cookbook/ch15_19.htm
Sinon, tu peux toujours t'inspirer du code source du module :
https://fastapi.metacpan.org/source/JSTOWE/Term-Cap-1.09/Cap.pm
Dal
Teste quand même si tu n'as pas le module Term::Cap, qui est présent sur toutes mes installations de Perl (même les minimales - il semble que ce module soit utilisé par le débogueur Perl). Tu as une fonction Tgoto, qui place le curseur à l'écran sur des coordonnées.
Un exemple là :
https://docstore.mik.ua/orelly/perl/cookbook/ch15_19.htm
Sinon, tu peux toujours t'inspirer du code source du module :
https://fastapi.metacpan.org/source/JSTOWE/Term-Cap-1.09/Cap.pm
Dal
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
23 mai 2006 à 15:31
23 mai 2006 à 15:31
Salut,
essaie ça
essaie ça
#! /usr/bin/perl # $c=120000; while ($c >=1){ print "\b" x length ($c); $c--; substr($c,0)=$c; print $c; }lami20j
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 565
23 mai 2006 à 15:48
23 mai 2006 à 15:48
Re,
j'ai completement oublié qu'on peut utiliser la fonction substr en tant que lvalue.
lami20j
j'ai completement oublié qu'on peut utiliser la fonction substr en tant que lvalue.
lami20j