2010-07-12 11 views
5

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

मैं एक स्क्रिप्ट मानक मॉड्यूल (जैसे getopt) के एक नंबर का उपयोग करता है और कुछ नहीं-तो-मानक मॉड्यूल (जैसे PerlMagick)

कुछ बिंदु मैं अपने पर्ल कोड वितरित करना चाहते हैं और मैं चाहता हूँ पर बना रहा हूं यह उन लोगों द्वारा उपयोगी हो सकता है जो वास्तव में पर्ल या प्रोग्रामिंग के बारे में नहीं जानते हैं। स्पष्ट रूप से मानक मॉड्यूल हमेशा वहां रहना चाहिए (मैं कुछ हद तक इसकी गारंटी के लिए "उपयोग 5.010" का उपयोग कर रहा हूं), लेकिन गैर मानक वाले क्या हैं?

मुझे लगता है कि दो संभावनाएं हैं: 1) क्या मुझे अंतिम उपयोगकर्ता को लापता मॉड्यूल स्थापित करने के लिए कहना चाहिए? 2) क्या मुझे एक इंस्टॉलेशन स्क्रिप्ट बनाना चाहिए जो मॉड्यूल के लिए परीक्षण करता है और यदि वे वहां नहीं हैं, तो उन्हें इंस्टॉल करें? यदि विकल्प 2 चुना गया है, तो क्या मुझे मॉड्यूल डाउनलोड करना चाहिए और उन्हें इंस्टॉल करना चाहिए? या उन्हें मेरे मुख्य कोड के साथ वितरित करें? मैं सिर्फ यकीन है कि क्या शिष्टाचार ऐसी बातों के साथ है नहीं कर रहा हूँ ...

आप सभी सलाह के लिए बहुत बहुत धन्यवाद, बेन

उत्तर

5

आप एक पर्ल वितरण (के रूप में CPAN पर इस्तेमाल किया) के रूप में अपने ऐप को डिज़ाइन करते हैं, तो आपको इस तरह की चीज़ से निपटने के लिए पर्ल टूलचेन की शक्ति मिलती है। आप बस यह सुनिश्चित कर लें कि जिन मॉड्यूल पर आप निर्भर हैं, वे आपके Makefile.PL में ठीक से सूचीबद्ध हैं, और फिर किसी को केवल अपना आवेदन और आवश्यकतानुसार प्राप्त करने के लिए cpan YourApp::Name लिखना होगा। या यदि उन्होंने सीपीएएन के अलावा कहीं और अपना ऐप डाउनलोड किया है और वे इसे मैन्युअल रूप से बना रहे हैं, तो make प्रक्रिया उनके लिए निर्भरता पा सकती है (यही कारण है कि Module::AutoInstall पूरी तरह से मृत नहीं है और आईएमओ होने के लायक नहीं है)।

विंडोज उपयोगकर्ताओं के लिए, cpan YourApp::Name चरण से पहले आपको केवल एक चीज जोड़ना है "स्ट्रॉबेरी पर्ल स्थापित करें"।

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

3

आप निष्पादनयोग्य करने के लिए उन्हें बदल सकते हैं। आप perlcc, perl2exe, PAR, या Perl development kit जैसी चीजों को आजमा सकते हैं।

1

और आप उन्हें prelcc या perlapp साथ संकलित करने के लिए नहीं करना चाहते हैं - तो किसी भी posibility काम करता है। "@INC में डेटा/UUID.pm पता नहीं लगा सकता (@INC शामिल हैं:

  • आप सही संस्करण की मॉड्यूल की जांच सकता था, अपने पर्ल कोड के लिए जैसे कुछ त्रुटि संदेश का दावा करने नहीं : ...) "। उदाहरण के लिए:

    eval { use Data::UUID; }; 
    if([email protected]) { 
         print "Data::UUID not found\n"; 
    } 
    

    या

    eval { use Text::ParseWords 3.23; }; 
    if([email protected]) { 
         print "Text::ParseWords 3.23 not found\n"; 
    } 
    
  • आप CPAN मॉड्यूल (या यूनिक्स पर cpan कार्यक्रम) का उपयोग कर सकते हैं। की तरह, आप कोशिश कर सकते हैं शेल कमांड:

    cpan Data::UUID 
    

    या पर्ल स्क्रिप्ट से:

    #!/usr/bin/perl 
    use CPAN; 
    CPAN::install("Data::UUID"); 
    
+0

डाउनवोट: यह काम नहीं करता है क्योंकि 'उपयोग' संकलन समय पर चलता है। साथ ही, हमारे पास पहले से ही पूर्ण निर्भरता ट्रैकिंग + इंस्टॉलेशन टूलचेन है क्योंकि हॉब्स के उत्तर का वर्णन है, इस हैकरी की कोई आवश्यकता नहीं है। – daxim

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