2012-02-09 12 views
5

Tengo un script Perl que usa Term::ANSIColor. Solía ​​ser el caso que si vuelvo a dirigir la salida a un archivo > file.txt continuación, el archivo contiene sólo el texto, y no los códigos de color ^[[0mEspecificadores de color Perl con salida redirigida

Algo cambió en mi máquina, Ubuntu 10.04, de tal manera que la salida redirigida incluye estos especial caracteres que especifican el color

¿Alguna idea de cómo solucionar esto? ¿Puedo detectar la redirección de salida desde el script de Perl y omitir la parte de color?

Gracias!

Respuesta

6

Puede probar si usted está funcionando de forma interactiva utilizando el paquete de IO::Interactive:

use IO::Interactive qw(is_interactive); 

if (is_interactive()) 
{ 
    # show some fancy color 
} 

La lógica detrás del uso de IO :: Interactivo (en lugar de simplemente probar si STDIN es un TTY con el operador -t) es ampliamente explained by Damian Conway.

+2

Para un pequeño guión rápido, STDIN es perfectamente aceptable. Lo uso para cualquier tipo de cosas que quiero coloreadas. – zostay

+0

@zostay No pude evitar los colores al marcar -t STDIN. Mi script se ejecuta como './Script.prl> file.txt'. Sin embargo, al marcar -t STDOUT funcionó correctamente – Mikhail

+0

@Mikhail: en ese caso, es probable que desee probar 'STDOUT' en lugar de' STDIN'. –

Cuestiones relacionadas