2010-11-11 4 views
4

J'utilise le doc ici pour imprimer des messages d'utilisation pour l'utilisateur. Existe-t-il un moyen d'imprimer des mots spécifiques BOLD similaire aux pages man sur unix. J'utilise ceci sur Unix. Est-il possible d'utiliser Term :: ANSIColor (ou d'une autre manière?) Avec le doc ici?Comment imprimer du texte BOLD dans doc ici en Perl?

Répondre

9

1) Vous pouvez simplement inclure des codes ANSI en heredoc:

print <<EOD; 
XXXX\033[1;30;40m YYYY\033[1;33;43m ZZZZ\033[0mRESET 
EOD 

2) Heredoc interpole les variables, donc si vous incluez les couleurs ANSI dans une variable, cela fonctionne.

my $v="xxxxx"; 
$var = "\nXXXX\033[1;30;40m YYYY\033[1;33;43mZZZZ\033[0mRESET\n"; 
print <<EOD; 
$var 
EOD 

3) Miser sur # 2, vous pouvez générer des codes ANSI via Term :: méthode de ANSIColor color() comme une chaîne et utiliser la variable contenant cette chaîne dans la heredoc. Désolé, pas d'exemple puisque ANSIColor n'est pas installé mais devrait être évident.

Vous voudrez peut-être stocker un code ANSI spécifique dans une variable spécifique et mettre le texte actuel dans Heredoc et Sprincle variables de code ANSI là.

+0

@DVK: Cool! Merci ! – Wilderness

+0

@DVK: Veuillez placer ce point-virgule à côté du jeton heredoc auquel il appartient. Vous ne devriez pas changer où vont les choses. – tchrist

+0

@tchrist - Terminé. Je n'ai pas utilisé d'heredocs depuis longtemps, désolé. Je suis curieux de savoir pourquoi cela semble fonctionner aussi bien avec le point-virgule après la fin de l'hérédoc qu'après le jeton? – DVK

4

Vous pouvez utiliser la syntaxe @{[expression]} dans heredoc pour évaluer du code arbitraire. La sortie de ce petit programme se penchera sur OK si votre terminal a un fond sombre et d'avant-plan de la lumière couleur:

use Term::ANSIColor; 

print <<EOF; 
I am using the here doc to print usage messages 
for the user. Is there a way to print @{[colored['bright_white'],'specific words']} 
BOLD similar to the man pages on unix. I am using 
this on Unix. Is there a way to use Term::ANSIColor 
(or some other way?) with the here doc? 
EOF 
+0

règle: Merci! C'est une option aussi. – Wilderness

Questions connexes