2010-10-10 2 views
1

J'ai juste commencé avec Perl et je veux écrire mon propre script pour scanner un document et convertir le fichier TIFF résultant en un fichier PDF. Si la conversion réussit (en utilisant tiff2pdf), je veux imprimer "Terminé" à la fin de la ligne, mais je n'arrive pas à trouver un indice pour le faire sur le Web. Je suppose que je dois obtenir la géométrie du terminal et compter les lettres que j'ai déjà imprimées, mais cela semble être compliqué. Avez-vous des conseils?Comment puis-je imprimer "Terminé" ou "Échec" à la fin de la ligne sur stdout en Perl?

+1

Générez-vous la source PDF sur stdout ou sur un fichier nommé? Avez-vous essayé simplement 'imprimer" Terminé \ n ";'? Pouvez-vous expliquer plus ce que vous essayez de faire et ce que vous obtenez à la place? – aschepler

+0

Voulez-vous dire la fin de la ligne ou sur le côté de la fenêtre du terminal? Ceux-ci signifient des choses différentes. –

Répondre

3

Vous avez raison d'inspecter la taille du terminal sur lequel vous imprimez. Il y a plusieurs façons de le faire, mais le moyen le plus portable et le plus fiable que je connaisse est Term::Size::Any.

Avec cela, vous pouvez obtenir la largeur du terminal que vous utilisez dans:

use Term::Size::Any; 
my $cols = chars *STDOUT{IO}; 

Avec cela, vous pouvez imprimer ce que vous voulez, rembourré avec la bonne quantité d'espaces, par exemple:

printf "% ${cols}s", "Done\n"; 

Sachez également que les programmes ne sont pas toujours transmis aux terminaux. La sortie peut, par exemple, être redirigée vers un fichier, vous pouvez donc avoir besoin d'une solution de repli appropriée si la taille du terminal échoue.

Questions connexes