कुछ सिस्टम स्क्रिप्ट की शुरुआत में #!/usr/bin/perl
लाइन को नहीं पहचानते हैं, और इसलिए इस तरह के सिस्टम पर नाम से एक पर्ल प्रोग्राम को आमंत्रित करने का प्रयास करने से स्क्रिप्ट को केवल खोल में ही पास किया जाएगा। इसका मुकाबला करने के लिए, पोर्टेबल पर्ल प्रोग्राम एक लाइन से शुरू होते हैं, जब मानक पॉज़िक्स शैल द्वारा व्याख्या की जाती है, तो स्क्रिप्ट को perl(1)
पर पास करने का कारण बनता है। if 0
पर्ल द्वारा चलाए जाने पर लाइन को अनदेखा कर देता है, और इसे एक अलग लाइन पर रखकर गोले को एक अलग कमांड के रूप में पेश करने का कारण बनता है, जैसे ही इसे पढ़ा जाता है, केवल eval 'exec /usr/bin/perl -w -S $0 ${1+"[email protected]"}'
चलाता है।
धन्यवाद, बहुत कुछ! वास्तव में कितना चालाक! –
मुझे आश्चर्य है कि अभी भी ऐसी किसी भी प्रणाली के बारे में चिंता करने योग्य है जो [शेबांग] (http://en.wikipedia.org/wiki/Shebang_ (यूनिक्स) का समर्थन नहीं करता है)। –
मेरे पास स्क्रिप्ट हैं जो ऐसा करते हैं ताकि वे सोलारिस और लिनक्स के तहत चल सकें। शेबांग एक सोलारिस पर्ल को इंगित करता है, लेकिन लिनक्स के तहत स्क्रिप्ट को खोल के रूप में निष्पादित किया जाता है, और eval line एक लिनक्स perl निष्पादित करता है। पर्दे अजीब स्थानों के तहत स्थापित हैं, लेकिन फाइलों/निर्देशिकाओं को एनएफएस के माध्यम से सिस्टम के बीच साझा किया जाता है। – runrig