मैंने सी पुस्तकालय के लिए एक पर्ल एक्सएस रैपर लिखा है जिसमें लगभग 80 8 फ़ंक्शन शामिल हैं। अभी मेरी सामान्य रणनीतिके साथ सी फ़ंक्शन से त्रुटि को प्रतिस्थापित करना है और कॉलिंग पर्ल कोड को स्पष्ट रूप से जांचना है कि वापसी undef
नहीं है। (कुछ सी कार्यों के लिए यह और अधिक जटिल है के रूप में मैं एक HV
/AV
में अपने उत्पादन में बदलने और त्रुटि रिपोर्ट करने के खाली सूची का उपयोग करें।)पर्ल का एक्सबी कैसे मर सकता है?
अब के रूप में मुझे लगता है कि लाइब्रेरी का उपयोग कर बड़ा पर्ल स्क्रिप्ट लिखने के लिए ले जाया गया है, मैं चाहता हूँ त्रुटि प्रबंधन को सरल बनाएं और उदाहरण का उपयोग करें सामान्य eval {}
/die
अपवाद की तरह त्रुटियों को संभालने के लिए तंत्र।
पल मेरी XS में एक साधारण XSUB पर कि तरह लग रहे:
SV *
simple_function(param1, param2 = 0, param3 = 0)
int param1
int param2
int param3
CODE:
int rc;
rc = simple_function(param1, param2, param3);
RETVAL = (rc == 0) ? &PL_sv_yes : &PL_sv_undef;
OUTPUT:
RETVAL
मैंने देखा है कि कुछ मॉड्यूल die
त्रुटियों पर करने के लिए "RaiseError" की तरह वैश्विक ध्वज है, लेकिन किसी भी उदाहरण मैं कर सकते हैं खोजने में असफल रहा से उधार लेना। मेरे पास के कुछ मॉड्यूल .pm
के अंदर "RaiseError" ध्वज को संभालते हैं, .xs
के अंदर नहीं, और इस प्रकार पर्ल के die
का उपयोग करने की अनुमति दी गई है। मेरे मामले में .pm
के अंदर लागू करने के लिए कठिन है क्योंकि कई कार्यों को विशेष त्रुटि जांच की आवश्यकता होती है। वह भी कोड डुप्लिकेशंस का कारण बनता है क्योंकि एक्सएस के अंदर चेक पहले से मौजूद हैं।
मुझे perlxs
/perlguts
दस्तावेज़ में कुछ भी प्रासंगिक नहीं मिला। विशेष रूप से, मैंने अपने .xs
से उत्पन्न .c
में Perl_croak()
पर कॉल देखी हैं, लेकिन फ़ंक्शन के लिए किसी दस्तावेज़ को ढूँढने में विफल रही है।
पर्ल के die
का एक्सएस 'एनालॉग क्या है? या XSUB रिपोर्ट पर्ल रन-टाइम को कैसे विफल कर सकती है कि फ़ंक्शन विफल हो गया है और वापसी के लिए कोई रिटेल नहीं है? [email protected]
को सही तरीके से कैसे सेट करें?
केवल एक प्रश्न। क्यों * मरना * और नहीं * मर रहा है *? या यह एक और लैरी बुद्धि थी? – Dummy00001
नहीं, [ज़ेफ्राम] (http://search.cpan.org/~zefram) है। यह [हैकिश] (http://catb.org/jargon/html/writing-style.html) उपयोग है क्योंकि यह कीवर्ड 'die' से प्राप्त होता है। – daxim