2012-02-09 15 views
5

Term::ANSIColor'u kullanan bir Perl komut dosyasına sahibim. Ben bir dosyaya > file.txt çıktı yönlendirirseniz ardından dosya ^[[0mYönlendirilmiş çıkışlı perl renk belirteci

şey Yönlendirilen çıktı bu özel içerdiğini böyle benim makinesi, Ubuntu 10,04, değiştirildi sadece metin değil, renk kodlarını içerdiğini durum için kullanılır renk belirten karakterler.

Bunu nasıl düzeltebiliriz? Çıkış yönlendirmesini perl betiğinin içinden tespit edebilir ve renk bölümünü atlayabilir miyim?

Teşekkürler!

cevap

6

Eğer IO::Interactive paketini kullanarak etkileşimli kalıp kalmadığını kontrol test edebilirsiniz:

use IO::Interactive qw(is_interactive); 

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

IO :: Interactive kullanarak (yerine STDIN-t operatörü ile bir tty ise sadece test) arkasındaki mantık yoğun olduğu explained by Damian Conway.

+2

Hızlı bir küçük komut için, -t STDIN kesinlikle kabul edilebilir. Bunu, renklendirilmesini istediğim bir kerelik için kullanıyorum. – zostay

+0

@zostay -t STDIN'i kontrol ederek renkleri önlemede başarılı değildim. Komut dosyası './Script.prl> file.txt' olarak çalıştırıldı. Ancak -t STDOUT'un doğru şekilde çalıştığını kontrol etmek – Mikhail

+0

@Mikhail: Bu durumda muhtemelen “STDIN” yerine “STDOUT” değerini test etmek isteyebilirsiniz. –