2017-09-26 5 views
5

पर्ल फ़ाइल I/O में open() फ़ंक्शन के निम्न उपयोग को मैं कैसे समझ सकता हूं?पर्ल में इस खुले() उपयोग में डॉट का अर्थ क्या है?

open(FHANDLE, ">" . $file) 

मैं वाक्य रचना in the docs के इस प्रकार खोजने के लिए कोशिश की, लेकिन नहीं मिला; कृपया ध्यान दें कि एक है। (डॉट) ">" के बाद।

मैं समझ नहीं पा रहा हूं कि डॉट का उपयोग है, बाकी मुझे पता है।

+0

https://perldoc.perl.org/perlop.html#Additive-Operators –

उत्तर

12

यह open के पुराने, दो-तर्क रूप का एक उदाहरण है (जिसे अब टालना चाहिए कि तीन-तर्क open उपलब्ध है)। पर्ल में, . परिशिष्ट ऑपरेटर है। यह दो तारों को एक स्ट्रिंग में जोड़ती है।

आपके द्वारा पोस्ट किए गए कोड की रेखा open(FHANDLE, ">$file") के बराबर है, यह > और $file के संयोजन के एक अलग तरीके का उपयोग करती है।

इन दिनों ऐसा करने का बेहतर तरीका open(my $fhandle, '>', $file) होगा, जैसा कि आपने लिंक किए गए दस्तावेज़ों में दिखाया है।

8

यह दो-तर्क open है। डॉट . पर्ल में स्ट्रिंग कॉन्सटेनेशन ऑपरेटर है। यदि open को दो तर्कों के साथ बुलाया जाता है, तो दूसरे तर्क में मोड और पथ दोनों शामिल होते हैं।

आपके मामले में, यह $file में लिखित फ़ाइल को खोलने के लिए खोल देगा।

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

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

open my $fh, '>', $file or die $!; 

अब शाब्दिक filehandle और मोड की जुदाई और फ़ाइल नाम के अलावा, हम भी इस कोड है, जो हमेशा एक अच्छा विचार है में त्रुटियों के लिए जाँच करें।

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