2009-01-21 6 views
12

वर्तमान में मैं अपने प्राथमिक पर्ल वितरण के रूप में Strawberry Perl का उपयोग करता हूं। हालांकि, मेरे पास कुछ एप्लिकेशन हैं जो पर्ल को साइगविन के माध्यम से कॉल करते हैं। ये आम तौर पर असफल होते हैं क्योंकि वे पर्ल के संस्करण को कॉल कर रहे हैं जिसे सिगविन के साथ पैक किया गया था, और केवल सिग्विन के lib फ़ोल्डर्स में दिख रहा था। स्ट्रॉबेरी पर्ल को कॉल करने के लिए मैं अपने साइविन पर्यावरण को कैसे संशोधित कर सकता हूं (और सी:/स्ट्रॉबेरी/पर्ल/lib dirs का उपयोग करें)?पैक किए गए पर्ल वितरण के बजाय स्ट्रॉबेरी पर्ल का उपयोग करने के लिए मैं अपने साइविन पर्यावरण को कैसे संशोधित कर सकता हूं?

उत्तर

19

यदि आप सेटअप प्रोग्राम का उपयोग कर सिग्विन से पर्ल को हटाते हैं तो यह डिफ़ॉल्ट रूप से स्ट्रॉबेरी पर्ल का उपयोग करेगा।

यदि आप सिग्विन से पर्ल को हटाने में असमर्थ हैं, तो आप स्ट्रॉबेरी से निष्पादन योग्य पर्ल के लिए एक प्रतीकात्मक लिंक बना सकते हैं।

एक cygwin खोल से, आदेशों के निम्नलिखित सेट का उपयोग करें:

$ mv /usr/bin/perl /usr/bin/perl-cygwin 
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl 

यह मानते हुए है आप डिफ़ॉल्ट स्ट्राबेरी पर्ल संस्थापक इस्तेमाल किया। तदनुसार अपने perl.exe स्थान को अपडेट करें यदि आपने इसे कहीं और इंस्टॉल किया है। (या इसी तरह

$ perl -v 

यह कहना चाहिए इस पर्ल, (संस्करण) है MSWin32-86-बहु धागा के लिए बनाया गया:

चेक यकीन है कि लिंक पर्ल संस्करण की जाँच करके ठीक से काम कर रहा है) और साइगविन-थ्रेड-बहु-64int के लिए बनाया गया है।

+0

एक आकर्षण की तरह काम किया! धन्यवाद! –

+0

अच्छा ... बहुत उपयोगी .. धन्यवाद। – Paul

-2

मेरे पास मेरी साइगविन मशीन पास नहीं है इसलिए मैं इसका परीक्षण नहीं कर सकता, लेकिन शायद आप एक स्क्रिप्ट के साथ पर्ल कमांड को आगे बढ़ा सकते हैं: साइगविन के नीचे/bin पर जाएं और perl.exe को वहां कुछ स्थानांतरित करें अन्यथा perl-org.exe की तरह, फिर एक शेल स्क्रिप्ट सेट करें जो आपके अन्य पर्ल को उसी तर्क के साथ निष्पादित करता है।

1

आप स्ट्रॉबेरी निर्देशिकाओं को पहले रखने के लिए अपना पाथ बदल सकते हैं। स्ट्रॉबेरी पाथ के अंत में अपनी निर्देशिका डालने से अच्छा होने की कोशिश करता है। यदि आपने .zip फ़ाइल से स्थापित किया है, हालांकि, उसने पैथ को बिल्कुल भी नहीं बदला है।

आप/usr/bin/perl को स्थानांतरित कर सकते हैं, लेकिन यह एक बुरा विचार है क्योंकि यह तब टूट जाता है जब सिगविन जो सोचता है उसे अपडेट करने का प्रयास करता है। मैंने अभी इस सप्ताह मेरे साथ ऐसा किया था और मेरे मैक पर तब तक मेरे साथ होता था जब तक कि मैंने सिस्टम सेटअप के साथ खेलना बंद नहीं किया और अपनी खुद की सामग्री पूरी तरह से अलग कर दी।

0

यह शायद एक पसंदीदा समाधान नहीं है, लेकिन आप # को संशोधित करने में सक्षम होना चाहिए! रेखा:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0 

मैं हमेशा न कि जो/usr/bin में है पर भरोसा करने की बजाय, कोई स्पष्ट स्थान और पर्ल की स्थापना को देखें।

0

मैं दो स्क्रिप्ट है कि मैं पर्ल स्क्रिप्ट जो भी करने के लिए पर्ल मेरी राह में पहला है की पहली पंक्ति को संशोधित करने के लिए उपयोग किया है: पर्ल मेरी $ पथ में पहली है कि करने के लिए rightperl hardcodes अब, envperl करने के लिए लाइन बदल जाएगा #!/usr/bin/env perl तो उपयोग करने के लिए पर्ल केवल स्क्रिप्ट लागू होने पर ही उठाया जाता है। सिगविन के तहत वास्तव में अच्छी तरह से काम करता है (और सामान्य रूप से यूनिक्स खोल से)।

1

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

"कौन सा perl" आपका मित्र है।

यदि आपको इससे परेशानी है, तो आप PERL5LIB पर्यावरण चर सेट कर सकते हैं, लेकिन यह आवश्यक नहीं होना चाहिए।

मैं अभी भी डीओएस-स्टाइल फ़ाइल पथ में पर्ल स्क्रिप्ट में पैरामीटर के रूप में पास करता हूं, यानी "डी: \ डेटा \ myfile.txt", "/cygdrive/d/data/myfile.txt" नहीं। तो अजीब तरह से पर्याप्त, पथ अंकन के इस मिश्रण काम करता है:

बैश> /cygdrive/d/scripts/myscript.pl घ: \ डेटा \ myfile.txt

0

आप नहीं गड़बड़ करने के लिए चारों ओर से किसी के साथ चाहते हैं पथ या स्थायी कुछ भी एक आसान टेम्पलेटरी हैक है। सिगविन शॉर्ट प्रॉम्प्ट पर "जहां perl" टाइप करें। यह निष्पादन के क्रम में पाथ में देखे गए सभी Perl.exe को सूचीबद्ध करेगा। उन लोगों के नाम बदलें जिन्हें आप देखना नहीं चाहते हैं जो उस पर्ल से पहले सूचीबद्ध हो जाएं जिसका आप उपयोग करना चाहते हैं। लेकिन जब आप काम करते हैं तो उन्हें वापस बदलना याद रखें या आपको सड़क के नीचे कुछ समस्याएं हो सकती हैं।

1

इनमें से कई अच्छे समाधान हैं, लेकिन मैं एक आसान विकल्प लेता हूं जिसे मुझे एक से अधिक बार संशोधित करने की आवश्यकता नहीं है।

आपको बस अपनी .bashrc फ़ाइल में एक पंक्ति जोड़ने/संशोधित करने की आवश्यकता है।

# Prepend strawberry perl to cygwin's path 
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH 

स्रोत अपने खोल से .bashrc फ़ाइल, (या एक नया खोल शुरू) और अपने कार्यक्रम चलाते हैं।

source ~/.bashrc 
perl script.pl 
+0

यह सही प्रथाओं का सही उत्तर है; ओ), लेकिन कुछ लोगों को यह महसूस करने में कुछ साल लगेंगे ...; ओ) –

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

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