2009-07-22 9 views
5

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

मैं पर्ल और अजीब के बीच फटा हुआ हूँ। मुझे पता है कि पर्ल पाठ प्रसंस्करण के लिए एक आदर्श उपकरण है (और मैं इसके लिए उचित रूप से उपयुक्त हूं) लेकिन, इससे पहले कि मैंने आरएफटी प्रतिक्रिया डाली, कि पर्ल की आवश्यकता होगी, मैं यह जानना चाहता हूं कि कोई प्लेटफ़ॉर्म पर चल रहा है या नहीं जहां डिफ़ॉल्ट रूप से पर्ल स्थापित नहीं है।

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

किसी भी अन्य उपकरण का सुझाव दिया जा सकता है, लेकिन पर्ल और अजीब के साथ मेरी परिचितता को देखते हुए, वे शायद शॉर्टलिस्ट पर केवल एक ही होंगे।

उत्तर

13

आप किसी भी यूनिक्स संस्करण के लिए संकलित पर्ल का एक संस्करण प्राप्त कर सकते हैं। पर्ल को 'इंस्टॉल' नहीं होना चाहिए, लेकिन आपके एप्लिकेशन की निर्देशिका के अंदर चलाया जा सकता है। मैं अपने वितरण के साथ पर्ल को बंडल कर दूंगा, ताकि आप सुनिश्चित कर सकें कि आप एक ही संस्करण चला रहे हैं।

लक्ष्य ओएस पर परीक्षण किए बिना, पूरी तरह से क्रॉस प्लेटफार्म खोल स्क्रिप्ट लिखना बहुत मुश्किल है। यदि आप एक अजीब स्क्रिप्ट विकसित करते हैं, तो आप शायद लिनक्स पर जीएनयू संस्करण का उपयोग करके विकसित होने जा रहे हैं, जो POSIX awk का सुपरसेट है। मैं अक्सर उद्घाटन स्रोत packages on Solaris को कॉन्फ़िगर कर रहा हूं, और मुझे लगातार ऐसे मुद्दे मिल रहे हैं जहां लोग आपके टूल का एक आधुनिक संस्करण चलाते हैं। उदाहरण के लिए, सोलारिस बैश पर मानक बोर्न शैल (/ bin/sh) नहीं है, और गूंज कोई पैरामीटर नहीं लेता है। यदि आप POSIX awk के साथ कोड करने का प्रयास करते हैं, तो आप खुद को रेगेक्स लाइब्रेरी, या दिनांकित सम्मेलनों से सीमित कर सकते हैं।

Perl's artistic licens ई आपको अपने कार्यक्रम के साथ इसे बंडल करने की अनुमति देता है, जब तक कि आप कुछ सरल चीजों का पालन करते हैं जैसे कॉपीराइट को व्यवहार में रखना।

+0

असल में, यह एक अच्छा विचार है (एक उपनिर्देशिका में बंडल करना) क्योंकि यह मुझे संस्करण को भी नियंत्रित करने की अनुमति देता है, हालांकि मुझे एकाधिक पैकेज (या एक पैकेज जो रनटाइम पर चयनित कई पर्ल उपनिर्देशिकाओं के साथ एक प्लेटफॉर्म पर शिप करना होगा)। मैं लाइसेंस देखूँगा। +1। – paxdiablo

3

लगभग हर * निक्स (बहुत सीमित डिस्क स्थान के लिए कुछ को छोड़कर) पर्ल स्थापित है। AFAIK, यहां तक ​​कि फ्रीबीएसडी। बस अगर ऐसा नहीं है, तो आप पर्ल प्रोग्राम को निष्पादन योग्य में बदल सकते हैं जिसे PAR::Packer के साथ पर्ल की आवश्यकता नहीं होगी।

+1

क्यों * यहां तक ​​कि * फ्रीबीएसडी? –

+0

@ सिनन, मैं अनुमान लगा रहा हूं "यहां तक ​​कि बीएसडी" क्योंकि मुझे अस्पष्ट विचार था कि उन्होंने इसे मानक के रूप में नहीं भेजा, लेकिन बंदरगाहों के माध्यम से। – paxdiablo

+2

@ पैक्स दुह! उसकी प्रतिक्रिया तब समझ में आता है। मैंने संस्करण 5 के बाद फ्रीबीएसडी का उपयोग किया है और उनमें से सभी को डिफ़ॉल्ट रूप से पर्ल स्थापित किया गया था। सिस्टम पर्ल पोर्ट्स पर्ल की तुलना में पुराना होता है, लेकिन एक शेल स्क्रिप्ट है जो रूट को यह चुनने की अनुमति देती है कि पर्ल डिफ़ॉल्ट होगा। –

2

भले ही पर्ल लगभग हर * निक्स प्लेटफार्मों पर स्थापित हो, भले ही वे एक ही संस्करण न हों, इसलिए इस बारे में जागरूक रहें। अधिकांश * निक्स पर काम करने की आवश्यकता के साथ, आप केवल खोल + उपयोगिताओं के साथ कोड कर सकते हैं। फ़ाइलों को पार्स करने के लिए, awk + shell नौकरी भी कर सकता है। आपको बस इसे "पोर्टेबल" प्रारूप में लिखना होगा। अधिक जानकारी के लिए this देखें

+1

पर्ल के लक्ष्यों में से एक (कई अन्य भाषाओं के विपरीत) रिलीज में बहुत संगत होना है, इसलिए न्यूनतम संस्करण के लिए लिखना आवश्यक है। –

+1

मुझे लगता है कि यह पर्ल 5.6 होगा। – innaM

+2

कुछ (बहुत विषम) प्लेटफॉर्म हैं जिनके पास 5.004 से अधिक अच्छे पर्ल बंदरगाह नहीं हैं, लेकिन आम तौर पर 5.6 एक अच्छा लक्ष्य है - यह 2000 से उपयोग में है। – ephemient

4

यदि ग्राहक के पास मशीनों पर पर्ल नहीं है तो आप हमेशा उस प्लेटफॉर्म के लिए निष्पादन योग्य बनाने के लिए Par::Packer का उपयोग कर सकते हैं। इसका यह भी अर्थ है कि आपको मॉड्यूल का उपयोग करने की चिंता करने की आवश्यकता नहीं है, क्योंकि उन्हें निष्पादन योग्य में भी शामिल किया जाएगा।

+0

चेतावनी दी जानी चाहिए कि मॉड्यूल विशेष रूप से गैर-अनुमोदित लाइसेंस का उपयोग करता है या नहीं एजीपीएल या कुछ। आपके द्वारा उपयोग किए जाने वाले मॉड्यूल के लिए आपको वास्तव में स्रोत कोड वितरित करना होगा। मुश्किल नहीं है, लेकिन यह दर्द हो सकता है। – Weegee

+0

हम्म, मैं उस पर बहस करता हूं, आप निष्पादन योग्य से स्रोत पुनर्प्राप्त कर सकते हैं, और जब तक आप इसे संशोधित नहीं करते हैं, तो सीपीएएन को स्रोत उपलब्ध कराने के रूप में गिनना चाहिए। –

+0

@Weegee, Par :: Packer बस फ़ाइलों को ज़िप करता है, इसलिए किसी भी कोड को निकालने के लिए यह छोटा है। एलजीपीएल की आवश्यकता हो सकती है कि आप उपयोगकर्ता को उनके संशोधित कोड के साथ नए निष्पादन योग्य बनाने के लिए संभव बनाते हैं, जो एक समस्या हो सकती है। इससे निपटने का सबसे आसान तरीका एक अलग समान फ़ाइल में संबंधित किसी भी पुस्तकालय को शामिल करना है। आपकी मुख्य फ़ाइल तब द्वितीयक फ़ाइल लोड कर सकती है। – daotoad

2

हालांकि मुझे लगता है कि आपके द्वारा निर्दिष्ट ऑपरेटिंग सिस्टम के सभी मौजूदा संस्करण पर्ल स्थापित करते हैं, निश्चित रूप से ऐसे पुराने संस्करण होंगे जो आसपास नहीं थे और नहीं। आपको यह भी पता होना चाहिए कि अजीब जैसे उपकरण भी पुराने यूएन * एक्स संस्करणों पर नियमित रूप से स्थापित नहीं किए गए थे, क्योंकि यह और अन्य प्रोग्रामिंग टूल वैकल्पिक अतिरिक्त थे (अतिरिक्त लागत पर)। मैं Altos प्रणालियों जहां भी टीसीपी/आईपी एक अतिरिक्त लागत के आइटम था याद है, लेकिन शायद आपको लगता है कि नहीं जा रहा हो जाएगा वापस दूर :-)

निष्कर्ष: किसी अपने app वास्तव में पर्ल की जरूरत है, तो आप इसे की जाँच करनी चाहिए स्थापित है (एक बोर्न शेल स्क्रिप्ट के माध्यम से - यदि थिएट काम नहीं करता है तो आप वास्तव में खराब हो जाते हैं) और यदि इसे इंस्टॉल करने का कोई तरीका प्रदान नहीं किया जाता है।

0

वाणिज्यिक इकाइयों को पर्ल के बहुत पुराने संस्करणों के साथ बंडल किया जाता है।

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