इस पर्ल कोड में उपयोग नहीं किया जाता है

मैंने perldoc में पढ़ा है कि -t फ़ाइल ऑपरेटर का उपयोग यह तय करने के लिए किया जाता है कि एक फ़ाइल को एक ttyhand खोला गया है या नहीं। तब मैंने पढ़ा कि क्या एक टीटी था और मैं समझता हूं कि यह टर्मिनल के लिए पुरानी अवधि है?

मेरा मुख्य प्रश्न यह है कि इस कोड का उपयोग किस प्रकार किया जाता है:

if(-t STDERR) {
    die "some warning/error message here"
}

मुझे लगता है कि मैं वास्तव में समझ नहीं पा रहा हूं कि इसका मतलब क्या है "एक फाइल के लिए फाइलें खोलने के लिए"। क्या इसका मतलब है कि उस फ़ाइल के लिए विशेष आउटपुट tty - या टर्मिनल पर दिखाई देता है? टर्मिनल के अलावा कुछ चीज का उल्लेख कर सकते हैं?

4

2 उत्तर

यह यूनिक्स डिवाइस का एक प्रकार है। कंसोल प्रोग्राम के लिए ttys के रूप में दिखाई देते हैं, इसलिए कथन मूल रूप से पढ़ता है

"अगर एसटीडीईआरआर को कंसोल पर भेजा जाता है, ..."

लेकिन काफी नहीं। हम भौतिक उपकरणों के बारे में बात नहीं कर रहे हैं लेकिन /dev/tty * । इस प्रकार, एक कार्यक्रम के लिए एक टर्मिनल होने का नाटक करना संभव है। उदाहरण के लिए, अपेक्षा का उपयोग करता है आईओ :: पीटीआई

एसटीडीईआरआर एक सादा फाइल, एक पाइप या सॉकेट भी हो सकता है। -t इनके लिए गलत होगा।

script 2>foo        # Plain file
script 2>&1 | cat   # Pipe
6
जोड़ा

यह कोड यह कहना चाहता है कि मानक त्रुटि को फ़ाइल में रीडायरेक्ट किया जा रहा है। तो चल रहा है

perl the_script.pl

die कॉल ट्रिगर करेगा, लेकिन

perl the_script.pl 2> error.log

नहीं होगा।

6
जोड़ा