2012-02-09 17 views
5

मेरे पास एक पर्ल स्क्रिप्ट है जो Term::ANSIColor का उपयोग करती है। यह मामला है कि अगर मैं एक फ़ाइल > file.txt लिए उत्पादन अनुप्रेषित तो फ़ाइल केवल पाठ, और नहीं रंग कोड ^[[0mरीडायरेक्ट आउटपुट के साथ पर्ल रंग विनिर्देश

कुछ मेरी मशीन, उबंटू 10.04, ऐसी है कि रीडायरेक्ट किए जाने वाले उत्पादन इन विशेष शामिल पर परिवर्तित होता है हुआ करता था अक्षर निर्दिष्ट करते हैं।

कोई विचार यह कैसे ठीक करें? क्या मैं पर्ल स्क्रिप्ट के अंदर से आउटपुट रीडायरेक्शन का पता लगा सकता हूं और कलर पार्ट को छोड़ सकता हूं?

धन्यवाद!

उत्तर

6

कि क्या आप सहभागी IO::Interactive पैकेज का उपयोग चला रहे हैं आप परीक्षण कर सकते हैं:

use IO::Interactive qw(is_interactive); 

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

(बजाय अगर STDIN-t ऑपरेटर के साथ एक tty है बस का परीक्षण) आईओ :: इंटरएक्टिव का उपयोग कर के पीछे तर्क बड़े पैमाने पर है explained by Damian Conway

+2

एक त्वरित छोटी लिपि के लिए, हालांकि, एसटीडीआईएन पूरी तरह से स्वीकार्य है। मैं इसे किसी भी एक-ऑफ के लिए रंगीन बनाना चाहता हूं। – zostay

+0

@ ज़ोस्टे मैं एसटीडीआईएन की जांच करके रंगों को रोकने में सफल नहीं था। मेरी स्क्रिप्ट './Script.prl> file.txt' के रूप में चलती है। हालांकि जांच-एसटीडीओटीटी ने सही ढंग से काम किया – Mikhail

+0

@ मिखाइल: उस स्थिति में आप शायद 'एसटीडीआईएन' के बजाय 'STDOUT' का परीक्षण करना चाहते हैं। –

संबंधित मुद्दे