2012-02-09 11 views
5

私はTerm::ANSIColorを使用するPerlスクリプトを持っています。それは私がファイル> file.txtに出力をリダイレクトした場合、そのファイルはテキストだけではなく、カラーコードリダイレクトされた出力は、これらの特別なを含むように私のマシン上で変更^[[0mリダイレクトされた出力を伴うPerlの色指定子

何か、Ubuntuの10.04を、含まれていることをケースにするために使用しました色を指定する文字。

これを修正する方法はありますか? perlスクリプトの中から出力リダイレクションを検出し、カラー部分をスキップできますか?

ありがとうございます!

答えて

6

あなたはIO::Interactiveパッケージを使用して対話的に実行しているかどうかをテストすることができます。

use IO::Interactive qw(is_interactive); 

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

IOを使用しての理論的根拠::インタラクティブは、(代わりにSTDIN場合だけでテストするのが-tオペレータとTTY)で広範囲にありますexplained by Damian Conway

+2

しかし、簡単なスクリプトでは、-t STDINは完全に受け入れられます。私はそれを私が色付けしたい任意の片想きのために使う。 – zostay

+0

@zostay私は-t STDINをチェックして色を妨げることに成功しませんでした。私のスクリプトは './Script.prl> file.txt'として実行されます。しかし、-t STDOUTが正しく動作しているのを確認するには – Mikhail

+0

@Mikhail:その場合は、おそらく 'STDIN'の代わりに' STDOUT'をテストしたいと思うでしょう。 –

関連する問題