पर्ल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 199: Line 199:
== प्रतीक ==
== प्रतीक ==


=== ऊंट ===
=== कैमल ===
[[File:Perl-camel-small.png|thumb|ऊंट प्रतीक ओ'रेली मीडिया द्वारा उपयोग किया जाता है]]ओ'रेली मीडिया द्वारा प्रकाशित प्रोग्रामिंग पर्ल, कवर पर [[साँड़नी|ड्रोमेडरी ऊंट]] की तस्वीर प्रदर्शित करता है और इसे सामान्यतः कैमल बुक कहा जाता है।<ref name="schwartz01">{{cite book |last1 = Schwartz |first1 = Randal L |author-link1 = Randal L. Schwartz |last2 = Phoenix |first2 = Tom |last3 = Foy |first3 = Brian |author-link3 = Brian D Foy |title = लर्निंग पर्ल, तीसरा संस्करण|isbn = 978-0-596-00132-2 |date = 2007-12-06 |url = https://archive.org/details/learningperl00schw }}</ref> यह छवि टी-शर्ट और अन्य कपड़ों की वस्तुओं पर दिखने वाले पर्ल के साथ-साथ सामान्य [[हैकर (प्रोग्रामर उपसंस्कृति)]] प्रतीक का एक अनौपचारिक प्रतीक बन गई है।{{cn|date=December 2020}}
[[File:Perl-camel-small.png|thumb|कैमल प्रतीक ओ'रेली मीडिया द्वारा उपयोग किया जाता है]]ओ'रेली मीडिया द्वारा प्रकाशित प्रोग्रामिंग पर्ल, कवर पर [[साँड़नी|ड्रोमेडरी कैमल]] की तस्वीर प्रदर्शित करता है और इसे सामान्यतः कैमल बुक कहा जाता है।<ref name="schwartz01">{{cite book |last1 = Schwartz |first1 = Randal L |author-link1 = Randal L. Schwartz |last2 = Phoenix |first2 = Tom |last3 = Foy |first3 = Brian |author-link3 = Brian D Foy |title = लर्निंग पर्ल, तीसरा संस्करण|isbn = 978-0-596-00132-2 |date = 2007-12-06 |url = https://archive.org/details/learningperl00schw }}</ref> यह छवि टी-शर्ट और अन्य कपड़ों की वस्तुओं पर दिखने वाले पर्ल के साथ-साथ सामान्य [[हैकर (प्रोग्रामर उपसंस्कृति)]] प्रतीक का एक अनौपचारिक प्रतीक बन गई है।{{cn|date=December 2020}}
ओ'रेली एक [[ट्रेडमार्क]] के रूप में छवि का मालिक है, लेकिन इसे गैर-व्यावसायिक उपयोग के लिए लाइसेंस देता है, जिसके लिए केवल एक पावती और www.perl.com के लिंक की आवश्यकता होती है। व्यावसायिक उपयोग के लिए लाइसेंस देने का निर्णय स्थिति-दर-स्थिति आधार पर लिया जाता है।<ref name="camel">{{cite web |url = http://archive.oreilly.com/pub/a/oreilly/perl/usage |archive-url = https://web.archive.org/web/20180425080044/http://archive.oreilly.com/pub/a/oreilly/perl/usage |url-status = dead |archive-date = 2018-04-25 |title = पर्ल कैमल उपयोग और ट्रेडमार्क सूचना|access-date = 2011-01-09 |publisher = [[O'Reilly Media]] }}</ref> ओ'रेली गैर-वाणिज्यिक साइटों के लिए प्रोग्रामिंग रिपब्लिक ऑफ पर्ल लोगो और पर्ल का उपयोग करने वाली किसी भी साइट के लिए पर्ल द्वारा संचालित "पावर्ड बाय पर्ल" बटन भी प्रदान करता है।<ref name="camel" />
ओ'रेली एक [[ट्रेडमार्क]] के रूप में छवि का मालिक है, लेकिन इसे गैर-व्यावसायिक उपयोग के लिए लाइसेंस देता है, जिसके लिए केवल एक पावती और www.perl.com के लिंक की आवश्यकता होती है। व्यावसायिक उपयोग के लिए लाइसेंस देने का निर्णय स्थिति-दर-स्थिति आधार पर लिया जाता है।<ref name="camel">{{cite web |url = http://archive.oreilly.com/pub/a/oreilly/perl/usage |archive-url = https://web.archive.org/web/20180425080044/http://archive.oreilly.com/pub/a/oreilly/perl/usage |url-status = dead |archive-date = 2018-04-25 |title = पर्ल कैमल उपयोग और ट्रेडमार्क सूचना|access-date = 2011-01-09 |publisher = [[O'Reilly Media]] }}</ref> ओ'रेली गैर-वाणिज्यिक साइटों के लिए प्रोग्रामिंग रिपब्लिक ऑफ पर्ल लोगो और पर्ल का उपयोग करने वाली किसी भी साइट के लिए पर्ल द्वारा संचालित "पावर्ड बाय पर्ल" बटन भी प्रदान करता है।<ref name="camel" />
{{Clear}}
{{Clear}}
Line 211: Line 211:


=== रैप्टर ===
=== रैप्टर ===
[[File:Perl5Raptor.png|thumb|Alternative Perl 5 Logo]][[Mojolicious|मोजोलिसियस]] के निर्माता, सेबस्टियन रिडेल ने [[Dromaeosauridae|रैप्टर डायनासोर]] का चित्रण करते हुए एक लोगो बनाया, जो सीसी-एसए लाइसेंस, संस्करण 4.0 के तहत उपलब्ध है।<ref name="riedel11">{{cite web |first = Sebastian |last = Riedel |title = पर्ल 5 रैप्टर|date = 2012-01-18 |url = https://github.com/kraih/perl-raptor |work = Sebastian Riedel |access-date = 2017-11-12 |archive-date = June 11, 2018 |archive-url = https://web.archive.org/web/20180611021629/https://github.com/kraih/perl-raptor |url-status = live }}</ref> रैप्टर का एनालॉग मैट एस ट्राउट द्वारा 2010 में प्रारम्भ की गई बातचीत की एक श्रृंखला से आता है।<ref name="trout10">{{cite web |first = Matt |last = Trout |title = वेलोसिरैप्टर की स्थिति - चरण दो|date = 2005-06-16 |url = https://shadow.cat/blog/matt-s-trout/sotv-vi/ |work = Shadowcat Systems Limited |access-date = 2017-11-12 |archive-date = November 13, 2017 |archive-url = https://web.archive.org/web/20171113003519/https://shadow.cat/blog/matt-s-trout/sotv-vi/ |url-status = live }}</ref>
[[File:Perl5Raptor.png|thumb|Alternative Perl 5 Logo]][[Mojolicious|मोजोलिसियस]] के निर्माता, सेबस्टियन रिडेल ने [[Dromaeosauridae|रैप्टर डायनासोर]] का चित्रण करते हुए एक लोगो बनाया, जो सीसी-एसए लाइसेंस, संस्करण 4.0 के अधीन उपलब्ध है।<ref name="riedel11">{{cite web |first = Sebastian |last = Riedel |title = पर्ल 5 रैप्टर|date = 2012-01-18 |url = https://github.com/kraih/perl-raptor |work = Sebastian Riedel |access-date = 2017-11-12 |archive-date = June 11, 2018 |archive-url = https://web.archive.org/web/20180611021629/https://github.com/kraih/perl-raptor |url-status = live }}</ref> रैप्टर का एनालॉग मैट एस ट्राउट द्वारा 2010 में प्रारम्भ की गई बातचीत की एक श्रृंखला से आता है।<ref name="trout10">{{cite web |first = Matt |last = Trout |title = वेलोसिरैप्टर की स्थिति - चरण दो|date = 2005-06-16 |url = https://shadow.cat/blog/matt-s-trout/sotv-vi/ |work = Shadowcat Systems Limited |access-date = 2017-11-12 |archive-date = November 13, 2017 |archive-url = https://web.archive.org/web/20171113003519/https://shadow.cat/blog/matt-s-trout/sotv-vi/ |url-status = live }}</ref>
{{Clear}}
{{Clear}}


Line 223: Line 223:
=== विशेषताएं ===
=== विशेषताएं ===
पर्ल की समग्र संरचना C से सामान्यतः प्राप्त होती है। पर्ल प्रकृति में [[प्रक्रियात्मक प्रोग्रामिंग]], [[चर (प्रोग्रामिंग)]] एस, [[अभिव्यक्ति (प्रोग्रामिंग)]], [[कार्य विवरण]], [[कोष्ठक]]-सीमांकित [[ब्लॉक (प्रोग्रामिंग)]] एस, [[नियंत्रण संरचना]] और सबरूटीन्स के साथ है।<ref>{{Cite book|last=Nagpal|first=D.P.|title=वेब डिजाइन प्रौद्योगिकी|publisher=S. Chand|year=2010|isbn=978-8121927635|location=India|pages=700|language=English}}</ref>
पर्ल की समग्र संरचना C से सामान्यतः प्राप्त होती है। पर्ल प्रकृति में [[प्रक्रियात्मक प्रोग्रामिंग]], [[चर (प्रोग्रामिंग)]] एस, [[अभिव्यक्ति (प्रोग्रामिंग)]], [[कार्य विवरण]], [[कोष्ठक]]-सीमांकित [[ब्लॉक (प्रोग्रामिंग)]] एस, [[नियंत्रण संरचना]] और सबरूटीन्स के साथ है।<ref>{{Cite book|last=Nagpal|first=D.P.|title=वेब डिजाइन प्रौद्योगिकी|publisher=S. Chand|year=2010|isbn=978-8121927635|location=India|pages=700|language=English}}</ref>
पर्ल शेल प्रोग्रामिंग से भी फीचर लेता है। सभी वेरिएबल्स को अग्रणी [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] के साथ चिह्नित किया गया है, जो वेरिएबल्स को [[चर प्रक्षेप]] सीधे स्ट्रिंग (कंप्यूटर साइंस) में होने की अनुमति देता है।चूंकि, शेल के विपरीत, पर्ल वेरिएबल्स के सभी एक्सेस पर सिगिल का उपयोग करता है, और सिगिल का उपयोग करने वाली अधिकांश अन्य प्रोग्रामिंग भाषाओं के विपरीत, सिगिल वेरिएबल के प्रकार को नहीं बल्कि अभिव्यक्ति के प्रकार को दर्शाता है। तो उदाहरण के लिए, जबकि एक सरणी को सिगिल @ द्वारा दर्शाया गया है (उदाहरण के लिए <code>@arrayname</code>), सरणी के एक व्यक्तिगत सदस्य को स्केलर सिगिल $ (उदाहरण के लिए <code>$arrayname[3]</code>). पर्ल में कई बिल्ट-इन फ़ंक्शंस भी हैं जो शेल प्रोग्रामिंग में अक्सर उपयोग किए जाने वाले टूल प्रदान करते हैं (चूंकि इनमें से कई टूल शेल के बाहरी प्रोग्राम द्वारा कार्यान्वित किए जाते हैं) जैसे [[आरोही क्रम]], और [[ऑपरेटिंग सिस्टम]] सुविधाओं को कॉल करना।{{cn|date=December 2020}}
पर्ल शेल प्रोग्रामिंग से भी विशेषता लेता है। सभी वेरिएबल्स को अग्रणी [[सिगिल (कंप्यूटर प्रोग्रामिंग)]] के साथ चिह्नित किया गया है, जो वेरिएबल्स को [[चर प्रक्षेप]] सीधे स्ट्रिंग (कंप्यूटर साइंस) में होने की अनुमति देता है।चूंकि, शेल के विपरीत, पर्ल वेरिएबल्स के सभी एक्सेस पर सिगिल का उपयोग करता है, और सिगिल का उपयोग करने वाली अधिकांश अन्य प्रोग्रामिंग भाषाओं के विपरीत, सिगिल वेरिएबल के प्रकार को नहीं बल्कि अभिव्यक्ति के प्रकार को दर्शाता है। तो उदाहरण के लिए, जबकि एक सरणी को सिगिल @ द्वारा दर्शाया गया है (उदाहरण के लिए <code>@arrayname</code>), सरणी के एक व्यक्तिगत सदस्य को स्केलर सिगिल $ (उदाहरण के लिए <code>$arrayname[3]</code>). पर्ल में कई बिल्ट-इन फ़ंक्शंस भी हैं जो शेल प्रोग्रामिंग में अक्सर उपयोग किए जाने वाले टूल प्रदान करते हैं (चूंकि इनमें से कई टूल शेल के बाहरी प्रोग्राम द्वारा कार्यान्वित किए जाते हैं) जैसे [[आरोही क्रम]], और [[ऑपरेटिंग सिस्टम]] सुविधाओं को कॉल करना।{{cn|date=December 2020}}
पर्ल [[AWK|एडब्ल्यूके]] से [[साहचर्य सरणी]] (साहचर्य सरणियाँ) और सेड से नियमित अभिव्यक्तियाँ लेता है। ये कई पार्सिंग, टेक्स्ट-हैंडलिंग और डेटा-प्रबंधन कार्यों को सरल करते हैं। [[लिस्प (प्रोग्रामिंग भाषा)]] के साथ साझा किया गया एक ब्लॉक में अंतिम मूल्य का निहित [[रिटर्न स्टेटमेंट]] है, और सभी स्टेटमेंट ऐसे एक्सप्रेशन भी हैं जिनका उपयोग स्वयं बड़े एक्सप्रेशन में किया जा सकता है।{{cn|date=December 2020}}
पर्ल [[AWK|एडब्ल्यूके]] से [[साहचर्य सरणी]] (साहचर्य सरणियाँ) और सेड से नियमित अभिव्यक्तियाँ लेता है। ये कई पार्सिंग, टेक्स्ट-हैंडलिंग और डेटा-प्रबंधन कार्यों को सरल करते हैं। [[लिस्प (प्रोग्रामिंग भाषा)]] के साथ साझा किया गया एक ब्लॉक में अंतिम मूल्य का निहित [[रिटर्न स्टेटमेंट]] है, और सभी स्टेटमेंट ऐसे एक्सप्रेशन भी हैं जिनका उपयोग स्वयं बड़े एक्सप्रेशन में किया जा सकता है।{{cn|date=December 2020}}
पर्ल 5 में ऐसी विशेषताएं जोड़ी गई हैं जो जटिल [[डेटा संरचना]]ओं, प्रथम श्रेणी के कार्यों (अर्थात् मूल्यों के रूप में क्लोजर (कंप्यूटर विज्ञान)) और एक वस्तु-उन्मुख प्रोग्रामिंग मॉडल का समर्थन करती हैं। इनमें संदर्भ (कंप्यूटर विज्ञान), पैकेज, क्लास-आधारित [[गतिशील प्रेषण]] और [[कार्यक्षेत्र (प्रोग्रामिंग)]] सम्मिलित हैं, साथ ही कंपाइलर निर्देश (उदाहरण के लिए,<code>सख्त</code>[[निर्देश (प्रोग्रामिंग)]])। पर्ल 5 के साथ पेश की गई एक प्रमुख अतिरिक्त सुविधा कोड को पुन: प्रयोज्य मॉड्यूल के रूप में पैकेज करने की क्षमता थी। वॉल ने बाद में कहा कि पर्ल 5 के मॉड्यूल सिस्टम का पूरा उद्देश्य पर्ल कोर के अतिरिक्त पर्ल संस्कृति के विकास को प्रोत्साहित करना था।<ref>{{cite newsgroup |title = शीर्षक अज्ञात|date = 1997-05-10 |message-id = 199705101952.MAA00756@wall.org }}{{Dead link|date=November 2014}}</ref>
पर्ल 5 में ऐसी विशेषताएं जोड़ी गई हैं जो जटिल [[डेटा संरचना]]ओं, प्रथम श्रेणी के कार्यों (अर्थात् मूल्यों के रूप में क्लोजर (कंप्यूटर विज्ञान)) और एक वस्तु-उन्मुख प्रोग्रामिंग मॉडल का समर्थन करती हैं। इनमें संदर्भ (कंप्यूटर विज्ञान), पैकेज, क्लास-आधारित [[गतिशील प्रेषण]] और [[कार्यक्षेत्र (प्रोग्रामिंग)]] सम्मिलित हैं, साथ ही कंपाइलर निर्देश (उदाहरण के लिए,<code>सख्त</code>[[निर्देश (प्रोग्रामिंग)]])। पर्ल 5 के साथ प्रदर्शित की गई एक प्रमुख अतिरिक्त सुविधा कोड को पुन: प्रयोज्य मॉड्यूल के रूप में पैकेज करने की क्षमता थी। वॉल ने बाद में कहा कि पर्ल 5 के मॉड्यूल सिस्टम का पूरा उद्देश्य पर्ल कोर के अतिरिक्त पर्ल संस्कृति के विकास को प्रोत्साहित करना था।<ref>{{cite newsgroup |title = शीर्षक अज्ञात|date = 1997-05-10 |message-id = 199705101952.MAA00756@wall.org }}{{Dead link|date=November 2014}}</ref>
पर्ल के सभी संस्करण स्वचालित [[टाइप सिस्टम]] | डेटा-टाइपिंग और स्वचालित मेमोरी प्रबंधन करते हैं। दुभाषिया प्रोग्राम में प्रत्येक डेटा ऑब्जेक्ट के प्रकार और [[कंप्यूटर डेटा भंडारण]] आवश्यकताओं को जानता है; यह संदर्भ गणना का उपयोग करके आवश्यकतानुसार उनके लिए भंडारण आवंटित और मुक्त करता है (इसलिए यह मैन्युअल हस्तक्षेप के बिना सर्कुलर निर्भरता को हटा नहीं सकता है)। कानूनी प्रकार के रूपांतरण - उदाहरण के लिए, संख्या से स्ट्रिंग में रूपांतरण - स्वचालित रूप से [[रन टाइम (कार्यक्रम जीवनचक्र चरण)]] पर किए जाते हैं; अवैध प्रकार के रूपांतरण घातक त्रुटियाँ हैं।{{cn|date=December 2020}}
पर्ल के सभी संस्करण स्वचालित [[टाइप सिस्टम]] | डेटा-टाइपिंग और स्वचालित मेमोरी प्रबंधन करते हैं। दुभाषिया प्रोग्राम में प्रत्येक डेटा ऑब्जेक्ट के प्रकार और [[कंप्यूटर डेटा भंडारण]] आवश्यकताओं को जानता है; यह संदर्भ गणना का उपयोग करके आवश्यकतानुसार उनके लिए भंडारण आवंटित और मुक्त करता है (इसलिए यह मैन्युअल हस्तक्षेप के बिना सर्कुलर निर्भरता को हटा नहीं सकता है)। कानूनी प्रकार के रूपांतरण - उदाहरण के लिए, संख्या से स्ट्रिंग में रूपांतरण - स्वचालित रूप से [[रन टाइम (कार्यक्रम जीवनचक्र चरण)]] पर किए जाते हैं; अवैध प्रकार के रूपांतरण घातक त्रुटियाँ हैं।{{cn|date=December 2020}}


Line 235: Line 235:
पर्ल का [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] इस विचार को दर्शाता है कि जो चीजें अलग हैं उन्हें अलग दिखना चाहिए।<ref name="wall97">{{cite journal |url = http://www.linuxjournal.com/article/2070 |title = आप कहाँ से हैं?|access-date = 2011-03-13 |last = Wall |first = Larry |date = 1997-03-01 |journal = [[Linux Journal]] |archive-date = December 9, 2010 |archive-url = https://web.archive.org/web/20101209021107/http://www.linuxjournal.com/article/2070 |url-status = live }}</ref> उदाहरण के लिए, स्केलर, सरणियाँ और हैश के अलग-अलग प्रमुख सिगिल हैं। ऐरे सूचकांक और हैश कुंजियाँ विभिन्न प्रकार के ब्रेसिज़ का उपयोग करती हैं। स्ट्रिंग्स और नियमित अभिव्यक्तियों के अलग-अलग मानक सीमांकक होते हैं। इस दृष्टिकोण को लिस्प (प्रोग्रामिंग भाषा) जैसी भाषा से अलग किया जा सकता है, जहां सभी उद्देश्यों के लिए सरल और सार्वभौमिक [[एस-अभिव्यक्ति]] से बना एक ही मूल सिंटैक्स का उपयोग किया जाता है।{{cn|date=December 2020}}
पर्ल का [[सिंटेक्स (प्रोग्रामिंग भाषाएं)]] इस विचार को दर्शाता है कि जो चीजें अलग हैं उन्हें अलग दिखना चाहिए।<ref name="wall97">{{cite journal |url = http://www.linuxjournal.com/article/2070 |title = आप कहाँ से हैं?|access-date = 2011-03-13 |last = Wall |first = Larry |date = 1997-03-01 |journal = [[Linux Journal]] |archive-date = December 9, 2010 |archive-url = https://web.archive.org/web/20101209021107/http://www.linuxjournal.com/article/2070 |url-status = live }}</ref> उदाहरण के लिए, स्केलर, सरणियाँ और हैश के अलग-अलग प्रमुख सिगिल हैं। ऐरे सूचकांक और हैश कुंजियाँ विभिन्न प्रकार के ब्रेसिज़ का उपयोग करती हैं। स्ट्रिंग्स और नियमित अभिव्यक्तियों के अलग-अलग मानक सीमांकक होते हैं। इस दृष्टिकोण को लिस्प (प्रोग्रामिंग भाषा) जैसी भाषा से अलग किया जा सकता है, जहां सभी उद्देश्यों के लिए सरल और सार्वभौमिक [[एस-अभिव्यक्ति]] से बना एक ही मूल सिंटैक्स का उपयोग किया जाता है।{{cn|date=December 2020}}
पर्ल किसी विशेष [[प्रोग्रामिंग प्रतिमान]] (प्रक्रियात्मक प्रोग्रामिंग, [[वस्तु उन्मुख कार्यकर्म]]|ऑब्जेक्ट-ओरिएंटेड, [[कार्यात्मक प्रोग्रामिंग]], या अन्य) को लागू नहीं करता है या यहां तक ​​कि प्रोग्रामर को उनमें से किसी एक को चुनने की आवश्यकता नहीं होती है।{{cn|date=December 2020}}
पर्ल किसी विशेष [[प्रोग्रामिंग प्रतिमान]] (प्रक्रियात्मक प्रोग्रामिंग, [[वस्तु उन्मुख कार्यकर्म]]|ऑब्जेक्ट-ओरिएंटेड, [[कार्यात्मक प्रोग्रामिंग]], या अन्य) को लागू नहीं करता है या यहां तक ​​कि प्रोग्रामर को उनमें से किसी एक को चुनने की आवश्यकता नहीं होती है।{{cn|date=December 2020}}
पर्ल भाषा और इसके आस-पास के समुदाय और संस्कृति दोनों के लिए एक व्यापक व्यावहारिक झुकाव है। प्रोग्रामिंग पर्ल की प्रस्तावना आरम्भ होती है: पर्ल आपका काम पूरा करने के लिए एक भाषा है।<ref name="programmingperl2" />इसका एक परिणाम यह है कि पर्ल एक सुव्यवस्थित भाषा नहीं है। इसमें कई विशेषताएं सम्मिलित हैं, इसके नियमों के अपवादों को सहन करता है, और वाक्यात्मक अस्पष्टताओं को हल करने के लिए अनुमानों को नियोजित करता है। कंपाइलर की क्षमाशील प्रकृति के कारण, कभी-कभी बग को ढूंढना मुश्किल हो सकता है। पर्ल के फ़ंक्शन प्रलेखन सूची और स्केलर संदर्भों में अंतर्निहित फ़ंक्शंस के भिन्न व्यवहार पर टिप्पणी करते हुए कहते हैं, सामान्य तौर पर, वे वही करते हैं जो आप चाहते हैं, जब तक कि आप स्थिरता नहीं चाहते।<ref name="perlfunc">{{cite web |url = http://perldoc.perl.org/perlfunc.html |title = perlfunc - पर्ल निर्मित कार्य|access-date = 2011-01-10 |work = Perl 5 version 12.2 documentation |publisher = perldoc.perl.org |archive-date = January 6, 2011 |archive-url = https://web.archive.org/web/20110106003034/http://perldoc.perl.org/perlfunc.html |url-status = live }}</ref>
पर्ल भाषा और इसके आस-पास के समुदाय और संस्कृति दोनों के लिए एक व्यापक व्यावहारिक झुकाव है। प्रोग्रामिंग पर्ल की प्रस्तावना आरम्भ होती है: पर्ल आपका काम पूरा करने के लिए एक भाषा है।<ref name="programmingperl2" />इसका एक परिणाम यह है कि पर्ल एक सुव्यवस्थित भाषा नहीं है। इसमें कई विशेषताएं सम्मिलित हैं, इसके नियमों के अपवादों को सहन करता है, और वाक्यात्मक अस्पष्टताओं को हल करने के लिए अनुमानों को नियोजित करता है। कंपाइलर की क्षमाशील प्रकृति के कारण, कभी-कभी बग को ढूंढना मुश्किल हो सकता है। पर्ल के फ़ंक्शन प्रलेखन सूची और स्केलर संदर्भों में अंतर्निहित फ़ंक्शंस के भिन्न व्यवहार पर टिप्पणी करते हुए कहते हैं, सामान्यतः, वे वही करते हैं जो आप चाहते हैं, जब तक कि आप स्थिरता नहीं चाहते।<ref name="perlfunc">{{cite web |url = http://perldoc.perl.org/perlfunc.html |title = perlfunc - पर्ल निर्मित कार्य|access-date = 2011-01-10 |work = Perl 5 version 12.2 documentation |publisher = perldoc.perl.org |archive-date = January 6, 2011 |archive-url = https://web.archive.org/web/20110106003034/http://perldoc.perl.org/perlfunc.html |url-status = live }}</ref>
पर्ल 5 के माध्यम से पर्ल संस्करणों के लिए पर्ल भाषा के लिए कोई लिखित [[औपचारिक विनिर्देश]] या मानक सम्मिलित नहीं है, और पर्ल के वर्तमान संस्करण के लिए कोई बनाने की कोई योजना नहीं है। दुभाषिया का केवल एक ही कार्यान्वयन हुआ है, और इसके साथ ही भाषा का भी विकास हुआ है। वह दुभाषिया, अपने कार्यात्मक परीक्षणों के साथ, भाषा के वास्तविक विनिर्देश के रूप में खड़ा होता है। पर्ल 6, तथापि, एक विशिष्टता के साथ आरम्भ हुआ,<ref>{{cite web |url = http://www.perl6.org/specification |title = पर्ल 6 विशिष्टता|access-date = 2011-01-27 |publisher = The Perl 6 Project |archive-date = December 2, 2009 |archive-url = https://web.archive.org/web/20091202073507/http://www.perl6.org/specification/ |url-status = live }}</ref> और कई परियोजनाएं<ref>{{cite web |url = http://www.perl6.org/compilers/ |title = पर्ल 6 कंपाइलर्स|access-date = 2011-01-27 |publisher = The Perl 6 Project |archive-date = December 2, 2009 |archive-url = https://web.archive.org/web/20091202073302/http://www.perl6.org/compilers/ |url-status = live }}</ref> लक्ष्य कुछ या सभी विशिष्टताओं को लागू करना है।{{cn|date=December 2020}}
पर्ल 5 के माध्यम से पर्ल संस्करणों के लिए पर्ल भाषा के लिए कोई लिखित [[औपचारिक विनिर्देश]] या मानक सम्मिलित नहीं है, और पर्ल के वर्तमान संस्करण के लिए कोई बनाने की कोई योजना नहीं है। दुभाषिया का केवल एक ही कार्यान्वयन हुआ है, और इसके साथ ही भाषा का भी विकास हुआ है। वह दुभाषिया, अपने कार्यात्मक परीक्षणों के साथ, भाषा के वास्तविक विनिर्देश के रूप में खड़ा होता है। पर्ल 6, तथापि, एक विशिष्टता के साथ आरम्भ हुआ,<ref>{{cite web |url = http://www.perl6.org/specification |title = पर्ल 6 विशिष्टता|access-date = 2011-01-27 |publisher = The Perl 6 Project |archive-date = December 2, 2009 |archive-url = https://web.archive.org/web/20091202073507/http://www.perl6.org/specification/ |url-status = live }}</ref> और कई परियोजनाएं<ref>{{cite web |url = http://www.perl6.org/compilers/ |title = पर्ल 6 कंपाइलर्स|access-date = 2011-01-27 |publisher = The Perl 6 Project |archive-date = December 2, 2009 |archive-url = https://web.archive.org/web/20091202073302/http://www.perl6.org/compilers/ |url-status = live }}</ref> लक्ष्य कुछ या सभी विशिष्टताओं को लागू करना है।{{cn|date=December 2020}}


Line 245: Line 245:
यह [[PHP]] या पायथन (प्रोग्रामिंग लैंग्वेज) के अतिरिक्त [[वेब विकास]] के लिए लोकप्रिय [[LAMP (सॉफ्टवेयर बंडल)]] टेक्नोलॉजी स्टैक का एक वैकल्पिक घटक भी है। [[डेबियन]] [[लिनक्स]] वितरण में पर्ल का व्यापक रूप से [[सिस्टम प्रोग्रामिंग भाषा]] के रूप में उपयोग किया जाता है।<ref>{{cite web|url=https://wiki.debian.org/PerlFAQ|title=पर्ल अक्सर पूछे जाने वाले प्रश्न|quote=डेबियन में पर्ल का काफी व्यापक रूप से उपयोग किया जाता है। पर्ल में न केवल कुछ मुख्य कार्य लिखे गए हैं, बल्कि अस्थिर में 700 से अधिक पैकेज हैं जिनके नाम में पर्ल है (मार्च 2004)।|access-date=August 6, 2019|archive-date=August 6, 2019|archive-url=https://web.archive.org/web/20190806111259/https://wiki.debian.org/PerlFAQ|url-status=live}}</ref>
यह [[PHP]] या पायथन (प्रोग्रामिंग लैंग्वेज) के अतिरिक्त [[वेब विकास]] के लिए लोकप्रिय [[LAMP (सॉफ्टवेयर बंडल)]] टेक्नोलॉजी स्टैक का एक वैकल्पिक घटक भी है। [[डेबियन]] [[लिनक्स]] वितरण में पर्ल का व्यापक रूप से [[सिस्टम प्रोग्रामिंग भाषा]] के रूप में उपयोग किया जाता है।<ref>{{cite web|url=https://wiki.debian.org/PerlFAQ|title=पर्ल अक्सर पूछे जाने वाले प्रश्न|quote=डेबियन में पर्ल का काफी व्यापक रूप से उपयोग किया जाता है। पर्ल में न केवल कुछ मुख्य कार्य लिखे गए हैं, बल्कि अस्थिर में 700 से अधिक पैकेज हैं जिनके नाम में पर्ल है (मार्च 2004)।|access-date=August 6, 2019|archive-date=August 6, 2019|archive-url=https://web.archive.org/web/20190806111259/https://wiki.debian.org/PerlFAQ|url-status=live}}</ref>
पर्ल को प्रायः एक गोंद भाषा के रूप में प्रयोग किया जाता है, जो सिस्टम और इंटरफेस को एक साथ जोड़ता है जिसे विशेष रूप से इंटरऑपरेट करने के लिए डिज़ाइन नहीं किया गया था, और डेटा मंगिंग के लिए,<ref>{{cite web |url = http://books.perl.org/book/95 |title = पर्ल बुक्स - बुक: पर्ल के साथ डेटा मुंगिंग|work = Perl.org |access-date = December 30, 2010 |archive-date = September 7, 2011 |archive-url = https://web.archive.org/web/20110907020511/http://books.perl.org/book/95 |url-status = live }}</ref>अर्थात रिपोर्ट बनाने जैसे कार्यों के लिए बड़ी मात्रा में डेटा को परिवर्तित या संसाधित करना। वास्तव में, ये शक्तियाँ घनिष्ठ रूप से जुड़ी हुई हैं। संयोजन पर्ल को सिस्टम प्रशासकों के लिए एक लोकप्रिय सर्व-उद्देश्यीय भाषा बनाता है, विशेष रूप से क्योंकि छोटे प्रोग्राम, जिन्हें अक्सर [[एक-लाइनर कार्यक्रम]] कहा जाता है, में प्रवेश किया जा सकता है और एक ही [[कमांड लाइन इंटरफेस]] पर चलाया जा सकता है।{{cn|date=December 2020}}
पर्ल को प्रायः एक गोंद भाषा के रूप में प्रयोग किया जाता है, जो सिस्टम और इंटरफेस को एक साथ जोड़ता है जिसे विशेष रूप से इंटरऑपरेट करने के लिए डिज़ाइन नहीं किया गया था, और डेटा मंगिंग के लिए,<ref>{{cite web |url = http://books.perl.org/book/95 |title = पर्ल बुक्स - बुक: पर्ल के साथ डेटा मुंगिंग|work = Perl.org |access-date = December 30, 2010 |archive-date = September 7, 2011 |archive-url = https://web.archive.org/web/20110907020511/http://books.perl.org/book/95 |url-status = live }}</ref>अर्थात रिपोर्ट बनाने जैसे कार्यों के लिए बड़ी मात्रा में डेटा को परिवर्तित या संसाधित करना। वास्तव में, ये शक्तियाँ घनिष्ठ रूप से जुड़ी हुई हैं। संयोजन पर्ल को सिस्टम प्रशासकों के लिए एक लोकप्रिय सर्व-उद्देश्यीय भाषा बनाता है, विशेष रूप से क्योंकि छोटे प्रोग्राम, जिन्हें अक्सर [[एक-लाइनर कार्यक्रम]] कहा जाता है, में प्रवेश किया जा सकता है और एक ही [[कमांड लाइन इंटरफेस]] पर चलाया जा सकता है।{{cn|date=December 2020}}
पर्ल कोड को माइक्रोसॉफ्ट विंडोज और यूनिक्स में पोर्टेबल बनाया जा सकता है; इस तरह के कोड का उपयोग प्रायः सॉफ्टवेयर के आपूर्तिकर्ताओं द्वारा किया जाता है (दोनों वाणिज्यिक ऑफ-द-शेल्फ और बीस्पोक) सॉफ्टवेयर निर्माण और परिनियोजन-स्क्रिप्ट की पैकेजिंग और रखरखाव को आसान बनाने के लिए।{{cn|date=December 2020}}
पर्ल कोड को माइक्रोसॉफ्ट विंडोज और यूनिक्स में पोर्टेबल बनाया जा सकता है; इस तरह के कोड का उपयोग प्रायः सॉफ्टवेयर के आपूर्तिकर्ताओं द्वारा किया जाता है (दोनों वाणिज्यिक ऑफ-द-शेल्फ और बीस्पोक) सॉफ्टवेयर निर्माण और परिनियोजन-स्क्रिप्ट की पैकेजिंग और सुरक्षा को सरल बनाने के लिए।{{cn|date=December 2020}}
Tk (ढांचा)| Perl/Tk और [[wxPerl]] सामान्यतः पर्ल स्क्रिप्ट में ग्राफिकल यूजर इंटरफेस जोड़ने के लिए उपयोग किए जाते हैं।
Tk (ढांचा)| Perl/Tk और [[wxPerl]] सामान्यतः पर्ल स्क्रिप्ट में ग्राफिकल यूजर इंटरफेस जोड़ने के लिए उपयोग किए जाते हैं।


=== कार्यान्वयन ===
=== कार्यान्वयन ===
पर्ल को एक कोर इंटरप्रेटर के रूप में लागू किया गया है, जिसे C में लिखा गया है, साथ में पर्ल और C में लिखे मॉड्यूल का एक बड़ा संग्रह है। {{As of|2010}}, दुभाषिया C कोड की 150,000 पंक्तियों का है और विशिष्ट मशीन आर्किटेक्चर पर 1 एमबी निष्पादन योग्य के लिए संकलित करता है। वैकल्पिक रूप से, दुभाषिया को एक लिंक लाइब्रेरी में संकलित किया जा सकता है और अन्य कार्यक्रमों में अंतर्निहित किया जा सकता है। वितरण में लगभग 500 अनुखंड हैं, जिसमें पर्ल की 200,000 लाइनें और C कोड की अतिरिक्त 350,000 लाइनें सम्मिलित हैं (अनुखंड में अधिकांश C कोड में [[अक्षरों को सांकेतिक अक्षरों में बदलना]] का टेबल होते हैं)।{{cn|date=December 2020}} दुभाषिया में ऑब्जेक्ट-ओरिएंटेड आर्किटेक्चर होता है। पर्ल भाषा के सभी तत्व - स्केलर, सरणियाँ, हैश, कोडरेफ़्स, [[फ़ाइल संभाल]] - दुभाषिया में [[संरचना (सी प्रोग्रामिंग भाषा)]] द्वारा दर्शाए गए हैं। इन संरचनाओं पर संचालन [[मैक्रो (कंप्यूटर विज्ञान)]], टाइपपीफ और कार्यों के एक बड़े संग्रह द्वारा परिभाषित किया गया है; ये पर्ल C [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] का गठन करते हैं। पर्ल एपीआई शुरुआत न करने वालों के लिए आश्चर्यजनक हो सकती है, लेकिन इसके प्रवेश बिंदु एक सुसंगत [[नामकरण योजना]] का पालन करते हैं, जो इसका उपयोग करने वालों को मार्गदर्शन प्रदान करता है।{{cn|date=December 2020}} एक पर्ल दुभाषिया का जीवन सामान्यतः संकलन चरण और रन चरण में विभाजित होता है।<ref>A description of the Perl 5 interpreter can be found in ''Programming Perl'', 3rd Ed., chapter 18. See particularly page 467, which carefully distinguishes run phase and compile phase from [[Run time (program lifecycle phase)|run time]] and [[compile time]].  Perl "time" and "phase" are often confused.</ref> पर्ल में, चरण दुभाषिया के जीवन-चक्र में प्रमुख चरण हैं। प्रत्येक दुभाषिया प्रत्येक चरण से केवल एक बार गुजरता है, और चरण एक निश्चित क्रम में अनुसरण करते हैं।{{cn|date=December 2020}} पर्ल के संकलन चरण में जो कुछ होता है वह संकलन है, और पर्ल के रन चरण में जो कुछ होता है वह निष्पादन है, लेकिन यह महत्वपूर्ण अपवाद हैं। संकलन चरण के समय पर्ल कोड को निष्पादित करने के लिए पर्ल अपनी क्षमता का महत्वपूर्ण उपयोग करता है। पर्ल रन चरण में संकलन में भी देरी करेगा। वे शब्द जो उस प्रकार के प्रसंस्करण को इंगित करते हैं जो वास्तव में किसी भी समय हो रहा है, जो संकलन समय और रन टाइम हैं। संकलन चरण के समय अधिकांश बिंदुओं पर पर्ल संकलन समय में है, लेकिन रन चरण के दौरान संकलन समय भी दर्ज किया जा सकता है। एक स्ट्रिंग तर्क में कोड के लिए संकलन समय पास किया गया <code>[[eval]]</code> बिल्ट-इन रन चरण के समय होता है। संकलन चरण के समय पर्ल प्रायः रन टाइम में होता है और अधिकांश रन चरण रन टाइम में खर्च करता है। संकलन चरण में कोड में <code>BEGIN</code> ब्लॉक रन टाइम पर निष्पादित होते हैं।<!-- NOTE TO EDITORS:  There is something missing in the preceding sentence -- for one thing, a comma before the conjunction.  The sentence might reasonably read 'Code in BEGIN blocks executes NOT at run time, but in the compile phase,' but is that what the author intended? -->संकलन समय पर, दुभाषिया पर्ल कोड को [[सार वाक्य रचना का पेड़|सार वाक्य रचना का ट्री]] में पार्स करता है। रनटाइम पर, यह [[ट्री ट्रैवर्सल]] द्वारा प्रोग्राम को निष्पादित करता है। पाठ को केवल एक बार पार्स किया जाता है, और सिंटैक्स ट्री निष्पादित होने से पहले अनुकूलन के अधीन होता है, ताकि निष्पादन अपेक्षाकृत कुशल हो। सिंटैक्स ट्री पर संकलन-समय के अनुकूलन में [[निरंतर तह]] और संदर्भ प्रसार सम्मलित है, लेकिन [[पीपहोल अनुकूलन]] भी किया जाता है।<ref>{{Cite web|title=पर्लगट्स - पर्ल एपीआई का परिचय - पर्लडॉक ब्राउज़र|url=https://perldoc.perl.org/perlguts#Compile-pass-3:-peephole-optimization|access-date=2022-01-24|website=perldoc.perl.org}}</ref>
पर्ल को एक कोर इंटरप्रेटर के रूप में लागू किया गया है, जिसे C में लिखा गया है, साथ में पर्ल और C में लिखे मॉड्यूल का एक बड़ा संग्रह है। {{As of|2010}}, दुभाषिया C कोड की 150,000 पंक्तियों का है और विशिष्ट मशीन आर्किटेक्चर पर 1 एमबी निष्पादन योग्य के लिए संकलित करता है। वैकल्पिक रूप से, दुभाषिया को एक लिंक लाइब्रेरी में संकलित किया जा सकता है और अन्य कार्यक्रमों में अंतर्निहित किया जा सकता है। वितरण में लगभग 500 अनुखंड हैं, जिसमें पर्ल की 200,000 लाइनें और C कोड की अतिरिक्त 350,000 लाइनें सम्मिलित हैं (अनुखंड में अधिकांश C कोड में [[अक्षरों को सांकेतिक अक्षरों में बदलना]] का टेबल होते हैं)।{{cn|date=December 2020}} दुभाषिया में ऑब्जेक्ट-ओरिएंटेड आर्किटेक्चर होता है। पर्ल भाषा के सभी तत्व - स्केलर, सरणियाँ, हैश, कोडरेफ़्स, [[फ़ाइल संभाल]] - दुभाषिया में [[संरचना (सी प्रोग्रामिंग भाषा)]] द्वारा दर्शाए गए हैं। इन संरचनाओं पर संचालन [[मैक्रो (कंप्यूटर विज्ञान)]], टाइपपीफ और कार्यों के एक बड़े संग्रह द्वारा परिभाषित किया गया है; ये पर्ल C [[अप्लिकेशन प्रोग्रामिंग अंतरफलक]] का गठन करते हैं। पर्ल एपीआई शुरुआत न करने वालों के लिए आश्चर्यजनक हो सकती है, लेकिन इसके प्रवेश बिंदु एक सुसंगत [[नामकरण योजना]] का पालन करते हैं, जो इसका उपयोग करने वालों को मार्गदर्शन प्रदान करता है।{{cn|date=December 2020}} एक पर्ल दुभाषिया का जीवन सामान्यतः संकलन चरण और रन चरण में विभाजित होता है।<ref>A description of the Perl 5 interpreter can be found in ''Programming Perl'', 3rd Ed., chapter 18. See particularly page 467, which carefully distinguishes run phase and compile phase from [[Run time (program lifecycle phase)|run time]] and [[compile time]].  Perl "time" and "phase" are often confused.</ref> पर्ल में, चरण दुभाषिया के जीवन-चक्र में प्रमुख चरण हैं। प्रत्येक दुभाषिया प्रत्येक चरण से केवल एक बार गुजरता है, और चरण एक निश्चित क्रम में अनुसरण करते हैं।{{cn|date=December 2020}} पर्ल के संकलन चरण में जो कुछ होता है वह संकलन है, और पर्ल के रन चरण में जो कुछ होता है वह निष्पादन है, लेकिन यह महत्वपूर्ण अपवाद हैं। संकलन चरण के समय पर्ल कोड को निष्पादित करने के लिए पर्ल अपनी क्षमता का महत्वपूर्ण उपयोग करता है। पर्ल रन चरण में संकलन में भी देरी करेगा। वे शब्द जो उस प्रकार के प्रसंस्करण को इंगित करते हैं जो वास्तव में किसी भी समय हो रहा है, जो संकलन समय और रन टाइम हैं। संकलन चरण के समय अधिकांश बिंदुओं पर पर्ल संकलन समय में है, लेकिन रन चरण के समय संकलन समय भी लिपिबद्ध किया जा सकता है। एक स्ट्रिंग तर्क में कोड के लिए संकलन समय पास किया गया <code>[[eval]]</code> बिल्ट-इन रन चरण के समय होता है। संकलन चरण के समय पर्ल प्रायः रन टाइम में होता है और अधिकांश रन चरण रन टाइम में खर्च करता है। संकलन चरण में कोड में <code>BEGIN</code> ब्लॉक रन टाइम पर निष्पादित होते हैं।<!-- NOTE TO EDITORS:  There is something missing in the preceding sentence -- for one thing, a comma before the conjunction.  The sentence might reasonably read 'Code in BEGIN blocks executes NOT at run time, but in the compile phase,' but is that what the author intended? -->संकलन समय पर, दुभाषिया पर्ल कोड को [[सार वाक्य रचना का पेड़|सार वाक्य रचना का ट्री]] में पार्स करता है। रनटाइम पर, यह [[ट्री ट्रैवर्सल]] द्वारा प्रोग्राम को निष्पादित करता है। पाठ को केवल एक बार पार्स किया जाता है, और सिंटैक्स ट्री निष्पादित होने से पहले अनुकूलन के अधीन होता है, ताकि निष्पादन अपेक्षाकृत कुशल हो। प्रारूप ट्री पर संकलन-समय के अनुकूलन में [[निरंतर तह]] और संदर्भ प्रसार सम्मलित है, लेकिन [[पीपहोल अनुकूलन]] भी किया जाता है।<ref>{{Cite web|title=पर्लगट्स - पर्ल एपीआई का परिचय - पर्लडॉक ब्राउज़र|url=https://perldoc.perl.org/perlguts#Compile-pass-3:-peephole-optimization|access-date=2022-01-24|website=perldoc.perl.org}}</ref>
पर्ल में एक [[ट्यूरिंग-पूर्ण]] [[औपचारिक व्याकरण]] है क्योंकि संकलन चरण के समय निष्पादित रन-टाइम कोड से पार्सिंग प्रभावित हो सकती है।<ref>{{cite web |last = Schwartz |first = Randal |author-link = Randal L. Schwartz |title = पार्सिंग पर्ल पर|url = http://www.perlmonks.org/index.pl?node_id=44722 |access-date = 2007-01-03 |archive-date = September 27, 2007 |archive-url = https://web.archive.org/web/20070927000827/http://www.perlmonks.org/index.pl?node_id=44722 |url-status = live }}</ref> इसलिए, पर्ल को सीधे [[लेक्स प्रोग्रामिंग टूल]]/वाईएसीसी लेक्सिकल विश्लेषण/[[पार्सर]] संयोजन द्वारा पार्स नहीं किया जा सकता है। इसके अतिरिक्त, दुभाषिया अपने स्वयं के लेक्सर को लागू करता है, जो भाषा में अस्पष्टताओं को हल करने के लिए एक संशोधित [[जीएनयू बाइसन]] पार्सर के साथ समन्वय करता है।{{cn|date=December 2020}} यह प्रायः कहा जाता है कि केवल पर्ल ही पर्ल को पार्स कर सकता है,<ref>{{cite web |url = ftp://ftp.ora.com/pub/labs/tpj/tpj2.pdf |title = पर्ल जर्नल #19/9.26|access-date = 2011-02-04 |publisher = [[O'Reilly Media]] }}</ref> जिसका अर्थ है कि केवल पर्ल दुभाषिया (<code>perl</code>) पर्ल भाषा (पर्ल) को पार्स कर सकता है, लेकिन सामान्य रूप से यह भी सच नहीं है। क्योंकि पर्ल दुभाषिया अपने संकलन चरण के दौरान एक ट्यूरिंग मशीन का अनुकरण कर सकता है, इसे प्रत्येक विषय में पार्सिंग को पूरा करने के लिए हॉल्टिंग समस्या को तय करने की आवश्यकता होगी। यह एक दीर्घकालिक परिणाम है कि हॉल्टिंग समस्या अनिर्णीत है, और इसलिए पर्ल भी हमेशा पर्ल को पार्स नहीं कर सकता है। पर्ल अपने स्वयं के संकलन चरण में उपयोगकर्ता को अपनी पूर्ण प्रोग्रामिंग शक्ति तक पहुंच प्रदान करने का असामान्य विकल्प बनाता है। सैद्धांतिक शुद्धता की स्थिति में लागत अधिक है, लेकिन व्यावहारिक असुविधा दुर्लभ प्रतीत होती है।<ref>{{cite web
पर्ल में एक [[ट्यूरिंग-पूर्ण]] [[औपचारिक व्याकरण]] है क्योंकि संकलन चरण के समय निष्पादित रन-टाइम कोड से पार्सिंग प्रभावित हो सकती है।<ref>{{cite web |last = Schwartz |first = Randal |author-link = Randal L. Schwartz |title = पार्सिंग पर्ल पर|url = http://www.perlmonks.org/index.pl?node_id=44722 |access-date = 2007-01-03 |archive-date = September 27, 2007 |archive-url = https://web.archive.org/web/20070927000827/http://www.perlmonks.org/index.pl?node_id=44722 |url-status = live }}</ref> इसलिए, पर्ल को सीधे [[लेक्स प्रोग्रामिंग टूल]]/वाईएसीसी लेक्सिकल विश्लेषण/[[पार्सर]] संयोजन द्वारा पार्स नहीं किया जा सकता है। इसके अतिरिक्त, दुभाषिया अपने स्वयं के लेक्सर को लागू करता है, जो भाषा में अस्पष्टताओं को हल करने के लिए एक संशोधित [[जीएनयू बाइसन]] पार्सर के साथ समन्वय करता है।{{cn|date=December 2020}} यह प्रायः कहा जाता है कि केवल पर्ल ही पर्ल को पार्स कर सकता है,<ref>{{cite web |url = ftp://ftp.ora.com/pub/labs/tpj/tpj2.pdf |title = पर्ल जर्नल #19/9.26|access-date = 2011-02-04 |publisher = [[O'Reilly Media]] }}</ref> जिसका अर्थ है कि केवल पर्ल दुभाषिया (<code>perl</code>) पर्ल भाषा (पर्ल) को पार्स कर सकता है, लेकिन सामान्य रूप से यह भी सच नहीं है। क्योंकि पर्ल दुभाषिया अपने संकलन चरण के समय एक ट्यूरिंग मशीन का अनुकरण कर सकता है, इसे प्रत्येक विषय में पार्सिंग को पूरा करने के लिए हॉल्टिंग समस्या को तय करने की आवश्यकता होगी। यह एक दीर्घकालिक परिणाम है कि हॉल्टिंग समस्या अनिर्णीत है, और इसलिए पर्ल भी हमेशा पर्ल को पार्स नहीं कर सकता है। पर्ल अपने स्वयं के संकलन चरण में उपयोगकर्ता को अपनी पूर्ण प्रोग्रामिंग शक्ति तक पहुंच प्रदान करने का असामान्य विकल्प बनाता है। सैद्धांतिक शुद्धता की स्थिति में लागत अधिक है, लेकिन व्यावहारिक असुविधा दुर्लभ प्रतीत होती है।<ref>{{cite web
  |url=http://blogs.perl.org/users/jeffrey_kegler/2011/10/perl-and-parsing-11-are-all-perl-programs-parseable.html
  |url=http://blogs.perl.org/users/jeffrey_kegler/2011/10/perl-and-parsing-11-are-all-perl-programs-parseable.html
  |title=पर्ल और पार्सिंग 11: क्या सभी पर्ल प्रोग्राम पार्स करने योग्य हैं?|last=Kegler |first=Jeffrey  |date=October 7, 2011 |access-date=October 25, 2022
  |title=पर्ल और पार्सिंग 11: क्या सभी पर्ल प्रोग्राम पार्स करने योग्य हैं?|last=Kegler |first=Jeffrey  |date=October 7, 2011 |access-date=October 25, 2022
  |quote=... ऐसा लगता है कि हम बिल्कुल कुछ नहीं छोड़ रहे हैं। कोई भी कभी भी व्यवहारिक कमी नहीं दिखा पाया है}}</ref> पर्ल को पार्स करने वाले अन्य प्रोग्राम, जैसे [[स्थैतिक कार्यक्रम विश्लेषण]] सोर्स-कोड एनालाइजर और [[इंडेंट स्टाइल]] ऑटो-इंडेंटर्स, को न केवल अस्पष्ट [[भाषा निर्माण]] के साथ बल्कि सामान्य विषय में पर्ल पार्सिंग की [[पुनरावर्ती भाषा]] के साथ भी संघर्ष करना पड़ता है। एडम केनेडी (प्रोग्रामर) की पीपीआई परियोजना ने निष्पादन योग्य कोड के रूप में पर्ल को पार्स करने के अतिरिक्त एक दस्तावेज़ के रूप में पर्ल कोड को पार्स करने पर ध्यान केंद्रित किया (दस्तावेज़ के रूप में इसकी अखंडता बनाए रखना)। यह केनेडी ही थे जिन्होंने पहली बार अनुमान लगाया था कि पार्सिंग पर्ल 'हॉल्टिंग प्रॉब्लम' से पीड़ित है,<ref>{{cite web |url = https://metacpan.org/module/PPI |title = PPI—पर्ल को पार्स करें, विश्लेषण करें और मैनिप्युलेट करें (पर्ल के बिना)|author = Kennedy, Adam |year = 2006 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = September 3, 2013 |archive-url = https://web.archive.org/web/20130903091241/https://metacpan.org/module/PPI |url-status = live }}</ref> जो बाद में सिद्ध हुआ।<ref>{{cite journal |title = चावल की प्रमेय|journal = The Perl Review |volume = 4 |issue = 3 |pages = 23–29 |date = Summer 2008 }} and {{cite journal |title = Perl is Undecidable |journal = The Perl Review |volume = 5 |pages = 7–11 |date = Fall 2008 }}, available online at {{cite web |url = http://www.jeffreykegler.com/Home/perl-and-undecidability |title = Perl and Undecidability |author = Kegler, Jeffrey |access-date = January 4, 2009 |archive-date = August 17, 2009 |archive-url = https://web.archive.org/web/20090817183115/http://www.jeffreykegler.com/Home/perl-and-undecidability |url-status = live }}</ref> पर्ल को कोर पर्ल भाषा के लिए 250,000 से अधिक कार्यात्मक परीक्षण और कोर मॉड्यूल के लिए 250,000 से अधिक कार्यात्मक परीक्षण के साथ वितरित किया गया है। ये सामान्य निर्माण प्रक्रिया के हिस्से के रूप में चलते हैं और व्यापक रूप से दुभाषिया और इसके मूल मॉड्यूल का प्रयोग करते हैं। पर्ल डेवलपर्स यह सुनिश्चित करने के लिए कार्यात्मक परीक्षणों पर भरोसा करते हैं कि दुभाषिया में परिवर्तन [[सॉफ्टवेयर बग]] प्रदर्शित नहीं करते हैं; इसके अतिरिक्त, पर्ल उपयोगकर्ता जो देखते हैं कि दुभाषिया उनके सिस्टम पर अपने कार्यात्मक परीक्षणों को पास करता है, उनमें उच्च स्तर का विश्वास हो सकता है कि यह ठीक से काम कर रहा है।{{cn|date=December 2020}}
  |quote=... ऐसा लगता है कि हम बिल्कुल कुछ नहीं छोड़ रहे हैं। कोई भी कभी भी व्यवहारिक कमी नहीं दिखा पाया है}}</ref> पर्ल को पार्स करने वाले अन्य प्रोग्राम, जैसे [[स्थैतिक कार्यक्रम विश्लेषण]] सोर्स-कोड एनालाइजर और [[इंडेंट स्टाइल]] ऑटो-इंडेंटर्स, को न केवल अस्पष्ट [[भाषा निर्माण]] के साथ बल्कि सामान्य विषय में पर्ल पार्सिंग की [[पुनरावर्ती भाषा]] के साथ भी संघर्ष करना पड़ता है। एडम केनेडी (प्रोग्रामर) की पीपीआई परियोजना ने निष्पादन योग्य कोड के रूप में पर्ल को पार्स करने के अतिरिक्त एक दस्तावेज़ के रूप में पर्ल कोड को पार्स करने पर ध्यान केंद्रित किया (दस्तावेज़ के रूप में इसकी अखंडता बनाए रखना)। यह केनेडी ही थे जिन्होंने पहली बार अनुमान लगाया था कि पार्सिंग पर्ल 'हॉल्टिंग प्रॉब्लम' से पीड़ित है,<ref>{{cite web |url = https://metacpan.org/module/PPI |title = PPI—पर्ल को पार्स करें, विश्लेषण करें और मैनिप्युलेट करें (पर्ल के बिना)|author = Kennedy, Adam |year = 2006 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = September 3, 2013 |archive-url = https://web.archive.org/web/20130903091241/https://metacpan.org/module/PPI |url-status = live }}</ref> जो बाद में सिद्ध हुआ।<ref>{{cite journal |title = चावल की प्रमेय|journal = The Perl Review |volume = 4 |issue = 3 |pages = 23–29 |date = Summer 2008 }} and {{cite journal |title = Perl is Undecidable |journal = The Perl Review |volume = 5 |pages = 7–11 |date = Fall 2008 }}, available online at {{cite web |url = http://www.jeffreykegler.com/Home/perl-and-undecidability |title = Perl and Undecidability |author = Kegler, Jeffrey |access-date = January 4, 2009 |archive-date = August 17, 2009 |archive-url = https://web.archive.org/web/20090817183115/http://www.jeffreykegler.com/Home/perl-and-undecidability |url-status = live }}</ref> पर्ल को कोर पर्ल भाषा के लिए 250,000 से अधिक कार्यात्मक परीक्षण और कोर मॉड्यूल के लिए 250,000 से अधिक कार्यात्मक परीक्षण के साथ वितरित किया गया है। ये सामान्य निर्माण प्रक्रिया के भाग के रूप में चलते हैं और व्यापक रूप से दुभाषिया और इसके मूल मॉड्यूल का प्रयोग करते हैं। पर्ल डेवलपर्स यह सुनिश्चित करने के लिए कार्यात्मक परीक्षणों पर भरोसा करते हैं कि दुभाषिया में परिवर्तन [[सॉफ्टवेयर बग]] प्रदर्शित नहीं करते हैं; इसके अतिरिक्त, पर्ल उपयोगकर्ता जो देखते हैं कि दुभाषिया उनके सिस्टम पर अपने कार्यात्मक परीक्षणों को पास करता है, उनमें उच्च स्तर का विश्वास हो सकता है कि यह ठीक से काम कर रहा है।{{cn|date=December 2020}}




Line 416: Line 416:


== आलोचना ==
== आलोचना ==
पर्ल को इसके आलोचकों द्वारा विक्ट: लाइन शोर और [[केवल-लिखने वाली भाषा]] के रूप में संदर्भित किया गया है। इस तरह का सबसे पहला उल्लेख रैंडल एल. श्वार्ट्ज द्वारा लिखी गई पर्ल 4 ट्यूटोरियल पुस्तक [[लर्निंग पर्ल]] के पहले संस्करण में था।<ref>{{cite journal |title = डेवलपर अद्यतन|volume = 2 |journal = Dr. Dobb's डेवलपर अद्यतन |publisher = Miller-Freeman |year = 1995 }}</ref><!-- page 15 --> जिसके पहले अध्याय में वह कहता है: हां, कभी-कभी पर्ल बिन बुलाए लाइन शोर की तरह दिखता है, लेकिन अनुभवी पर्ल प्रोग्रामर के लिए, यह जीवन में एक मिशन के साथ [[अंततः,]]ड लाइन शोर जैसा दिखता है।<ref name="LP">{{cite book |title = लर्निंग पर्ल|last = Schwartz |first = Randal L. |author-link = Randal L. Schwartz |publisher = O'Reilly & Associates |year = 1993 |title-link = लर्निंग पर्ल|bibcode = 1993lepe.book.....S }}</ref> उन्होंने यह भी कहा कि उचित सावधानी के साथ कोडिंग करके पर्ल केवल लिखने वाली भाषा होने के आरोप से बचा जा सकता है।<ref name="LP" />पर्ल सिंहावलोकन दस्तावेज़{{Proper name|perlintro}}बताता है कि बिल्ट-इन मैजिक स्केलर वेरिएबल (कंप्यूटर साइंस) के नाम विराम चिह्न या लाइन शोर की तरह दिखते हैं।चूंकि, अंग्रेजी मॉड्यूल लंबे और छोटे अंग्रेजी विकल्प दोनों प्रदान करता है।{{Proper name|perlstyle}} पर्लस्टाइल दस्तावेज़ में कहा गया है कि व्हाइटस्पेस जोड़ने के लिए <code>/x</code> संशोधक का उपयोग करके नियमित अभिव्यक्तियों में लाइन शोर को कम किया जा सकता है।<ref>{{cite web |url = http://perldoc.perl.org/perlstyle.html |title = perlstyle|work = Perl 5 version 18.0 documentation |publisher = Perl 5 Porters and perldoc.perl.org |access-date = 2013-06-30 |archive-url = https://web.archive.org/web/20130626010707/http://perldoc.perl.org/perlstyle.html |archive-date = June 26, 2013 |url-status = dead }}</ref>
पर्ल को इसके आलोचकों द्वारा विक्ट: लाइन शोर और [[केवल-लिखने वाली भाषा]] के रूप में संदर्भित किया गया है। इस तरह का सबसे पहला उल्लेख रैंडल एल. श्वार्ट्ज द्वारा लिखी गई पर्ल 4 ट्यूटोरियल पुस्तक [[लर्निंग पर्ल]] के पहले संस्करण में था।<ref>{{cite journal |title = डेवलपर अद्यतन|volume = 2 |journal = Dr. Dobb's डेवलपर अद्यतन |publisher = Miller-Freeman |year = 1995 }}</ref><!-- page 15 --> जिसके पहले अध्याय में वह कहता है: हां, कभी-कभी पर्ल बिन बुलाए लाइन शोर की तरह दिखता है, लेकिन अनुभवी पर्ल प्रोग्रामर के लिए, यह जीवन में एक मिशन के साथ [[अंततः,]]ड लाइन शोर जैसा दिखता है।<ref name="LP">{{cite book |title = लर्निंग पर्ल|last = Schwartz |first = Randal L. |author-link = Randal L. Schwartz |publisher = O'Reilly & Associates |year = 1993 |title-link = लर्निंग पर्ल|bibcode = 1993lepe.book.....S }}</ref> उन्होंने यह भी कहा कि उचित सावधानी के साथ कोडिंग करके पर्ल केवल लिखने वाली भाषा होने के आरोप से बचा जा सकता है।<ref name="LP" />पर्ल सिंहावलोकन दस्तावेज़{{Proper name|perlintro}}बताता है कि बिल्ट-इन मैजिक स्केलर वेरिएबल (कंप्यूटर साइंस) के नाम विराम चिह्न या लाइन शोर के जैसे दिखते हैं।चूंकि, अंग्रेजी मॉड्यूल लंबे और छोटे अंग्रेजी विकल्प दोनों प्रदान करता है।{{Proper name|perlstyle}} पर्लस्टाइल दस्तावेज़ में कहा गया है कि व्हाइटस्पेस जोड़ने के लिए <code>/x</code> संशोधक का उपयोग करके नियमित अभिव्यक्तियों में लाइन शोर को कम किया जा सकता है।<ref>{{cite web |url = http://perldoc.perl.org/perlstyle.html |title = perlstyle|work = Perl 5 version 18.0 documentation |publisher = Perl 5 Porters and perldoc.perl.org |access-date = 2013-06-30 |archive-url = https://web.archive.org/web/20130626010707/http://perldoc.perl.org/perlstyle.html |archive-date = June 26, 2013 |url-status = dead }}</ref>
पर्ल 6 एफएक्यू के अनुसार, पर्ल 6 को उन सामान्य संदिग्धों को कम करने के लिए डिज़ाइन किया गया था जो पर्ल 5 आलोचकों से लाइन शोर का दावा करते हैं, जिसमें अधिकांश विराम चिह्नों को हटाना और रेगेक्स सिंटैक्स का स्वच्छताकरण सम्मिलित है।<ref name="P6FAQ">{{cite web |url = http://www.perl6.org/archive/faq.html |title = पर्ल 6 अकसर किये गए सवाल|publisher = Perl 6 Project |access-date = 2013-06-30 |archive-date = July 1, 2013 |archive-url = https://web.archive.org/web/20130701183900/http://www.perl6.org/archive/faq.html |url-status = live }}</ref> पर्ल 6 एफएक्यू में यह भी कहा गया है कि जिसे कभी-कभी पर्ल के लाइन शोर के रूप में संदर्भित किया जाता है, वह भाषा का वास्तविक वाक्य-विन्यास है जैसे कि [[क्रियावाचक संज्ञा]] और [[पूर्वसर्ग और पदस्थापन]] [[अंग्रेजी भाषा]] का हिस्सा हैं।<ref name="P6FAQ" />दिसंबर 2012 की ब्लॉग पोस्टिंग में, यह दावा करने के अतिरिक्त कि राकुडो पर्ल 6 विफल हो गया है और तब तक विफल रहेगा जब तक कि इसे कुछ वयस्क पर्यवेक्षण नहीं मिल जाता, [[रंगीन (प्रोग्रामर)]] ने कहा कि पर्ल 6 क