मेरे पास कई सीपीएएन मॉड्यूल हैं जो बॉयलर प्लेट पर कटौती करने और रिफैक्टरिंग को कम करने के लिए मेटा प्रोग्रामिंग का व्यापक उपयोग करते हैं।मेटा-प्रोग्रामिंग के साथ बनाए गए संकुल के बारे में सीपीएएन (पर्ल) को कैसे बताना है?
इसका परिणाम यह है कि कई पैकेज हैं जो प्रोग्रामेटिक रूप से बनाए जाते हैं, इस प्रकार सीपीएएन के स्रोत स्रोत में package X::Y::Z;
लाइन कभी नहीं होती है (और फिर अपनी पहली सूची में नामस्थान जोड़ने के लिए उपयोग करें आरक्षित नामस्थान)।
तो मेरा सवाल यह है कि सीपीएएन को इन रनटाइम बनाए गए पैकेजों के बारे में जानने का पसंदीदा तरीका है।
- मैन्युअल संकुल के सभी नीचे खोज और सूचकांक के लिए CPAN के लिए एक डमी
pm
फ़ाइल बनाने: यहाँ विकल्प मैं वर्तमान पर विचार कर रहा हूँ कर रहे हैं। - मैन्युअल रूप से खोजें और फिर
provides
सूची में उन्हें शामिल करने के लिए Build.PL को अपडेट करें। - कुछ कोड मेटा प्रोग्रामिंग दिनचर्या के एक हुक में
build dist
को अद्यतन करने के लिएprovides
याMETA.yaml
अंतिम विकल्प के कुछ अन्य खंड वर्तमान में क्या है जोड़े ट्रैक जिनमें से संकुल उपयोग किया जाता है रखने के लिए, और जोड़ने मैं दिशा में झुका रहा हूँ। मैं जानना चाहता हूं कि इस दृष्टिकोण के साथ कोई समस्या है या पैकेज की पूरी सूची के साथ सीपीएएन को अद्यतन रखने के किसी भी बेहतर तरीके हैं।
कम से कम मेरे सबसे खराब अपराधी के मामले में सूची :: जनरल 'रनटाइम बनाए गए संकुलों में से कोई भी कोई भी फ़ंक्शन नहीं है जिसे अंतिम उपयोगकर्ता को कभी भी कॉल करना चाहिए। तो यह वास्तव में उनके लिए अंतिम उपयोगकर्ता दस्तावेज प्रदान करने के लिए समझ में नहीं आता है। मुझे पता है कि सभी पैकेज नामों को घोषित करना जरूरी नहीं है, लेकिन मुझे लगा कि PAUSE उनके बारे में जानना "सर्वोत्तम" अभ्यास है। –
सभी PAUSE के बारे में परवाह है कि उचित फाइलें (META.yml/.json, MANIFEST, आदि) मौजूद हैं और सही ढंग से स्वरूपित हैं। एक बार आपके पास नामस्थान हो जाने के बाद, आप इसमें क्या करते हैं, आपकी चिंता है, न कि दूसरों को जब तक कि आपके योगदान के लिए आपके नामस्थान में अनुमति न हो। जब तक आप अपने दस्तावेज़ में व्याख्या करते हैं कि नेमस्पेस स्वचालित रूप से जेनरेट किए गए हैं, तो आपने अपना काम किया है। – squeeks
=> क्या आप इसके बारे में निश्चित हैं? ब्रायन डी फोय के ब्लॉग पोस्ट के अनुसार (http://www.effectiveperlprogramming.com/blog/884): जब PAUSE आपको प्राथमिक रखरखाव के रूप में नामस्थान निर्दिष्ट करता है, तो आप केवल उस नामस्थान के "स्वयं" होते हैं। हालांकि पर्ल नामस्थान दिखते हैं कि वे पदानुक्रमित हैं, वे नहीं हैं। यही है, पर्ल में कुछ भी नहीं है जो इस बात पर परवाह करता है कि आप किस नामस्थान का उपयोग करते हैं या आपका पैकेज किससे प्राप्त होता है। एक्सएमएल :: सरल नेमस्पेस एक्सएमएल से इसके नाम के आधार पर प्राप्त नहीं होता है। इसी तरह, आपके पास Foo :: Bar :: Baz पर केवल कोई अनुमति नहीं है क्योंकि PAUSE ने आपको Foo :: Bar पर अनुमतियां सौंपी हैं। –