2010-01-15 16 views

उत्तर

15

अपने उदाहरण में में उपयोगी हो सकता है के रूप में यह अपनी स्क्रिप्ट के अंत में है के लिए खुला है और पढ़ने के लिए खुले फ़ाइल पर, यह अनावश्यक है।

मैं सोचने की कोशिश कर रहा हूं कि पाइप पढ़ने पर यह आवश्यक है या नहीं। आम तौर पर आप एक ईओएफ स्थिति के बाद बंद करते हैं, इसलिए मुझे लगता है कि यह आवश्यक नहीं है।

हालांकि, यदि आप लिख रहे हैं, तो कई त्रुटियां हैं जो निकट समय पर पाई जा सकती हैं। सबसे सरल उदाहरण एक पूर्ण डिस्क है। बफरिंग के कारण फ़ाइलहेडल बंद होने तक इसकी सूचना नहीं दी जा सकती है।

आप use autodie (घातक से ऊपर अनुशंसित, मुझे लगता है) भी कर सकते हैं।

0

हां, "या मर" इसे करना चाहिए।

हालांकि एक फ़ाइल बंद करते समय त्रुटियों की जांच करना अनावश्यक है, क्योंकि एकमात्र त्रुटि जो आपको कभी भी उचित रूप से "खराब फ़ाइल डिस्क्रिप्टर" दे सकती है यानी फ़ाइल पहली जगह में नहीं खुलती थी - जिसका अर्थ यह प्रभावी ढंग से है वैसे भी सफल हुआ।

आप घातक का उपयोग करने पर भी विचार कर सकते हैं। (perldoc घातक)

+1

यदि पाइप पर हैंडल खोला गया था और प्रक्रिया को एक त्रुटि से समाप्त किया गया था तो आप बंद होने पर भी एक त्रुटि प्राप्त कर सकते हैं। – hobbs

+0

आप पिछले लिखने से भी एक त्रुटि प्राप्त कर सकते हैं (यदि लेखन buffered था और सिस्टम कॉल लौटने के बाद त्रुटि हुई)। – cjm

+1

डिस्क भरने पर भी आपको एक त्रुटि मिल सकती है। – daxim

7

अगर फ़ाइल पढ़ने के लिए खुला है तो इसकी आवश्यकता नहीं है।

हालांकि, जब फ़ाइल, यह संभव है कि आईओ बफर close पर प्लावित नहीं किया जा सका लेखन, तो यह उस मामले

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

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