पर्ल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 303: Line 303:
स्ट्राबेरी पर्ल विंडोज के लिए ओपन-सोर्स डिस्ट्रीब्यूशन है। जनवरी 2008 से इसे नियमित, त्रैमासिक प्रस्तावित किया गया है, जिसमें फीडबैक और अनुरोध के रूप में नए मॉड्यूल सम्मिलित हैं। स्ट्राबेरी पर्ल का उद्देश्य एक्सएस (XS) मॉड्यूल को संकलित करने सहित अन्य प्लेटफार्मों पर मानक पर्ल वितरण जैसे मॉड्यूल स्थापित करने में सक्षम होना है।{{cn|date=December 2020}}
स्ट्राबेरी पर्ल विंडोज के लिए ओपन-सोर्स डिस्ट्रीब्यूशन है। जनवरी 2008 से इसे नियमित, त्रैमासिक प्रस्तावित किया गया है, जिसमें फीडबैक और अनुरोध के रूप में नए मॉड्यूल सम्मिलित हैं। स्ट्राबेरी पर्ल का उद्देश्य एक्सएस (XS) मॉड्यूल को संकलित करने सहित अन्य प्लेटफार्मों पर मानक पर्ल वितरण जैसे मॉड्यूल स्थापित करने में सक्षम होना है।{{cn|date=December 2020}}


विंडोज के अनुसार पर्ल को चलाने का एक और प्रकार [[cygwin|सिग्विन]] एमुलेशन लेयर है। सिग्विन विंडोज पर यूनिक्स जैसा वातावरण प्रदान करता है, और सिग्विन सेट-अप प्रोग्राम में पर्ल और सीपीएएन दोनों मानक पूर्व-संकलित पैकेज के रूप में उपलब्ध हैं। चूंकि साइगविन में जीसीसी भी सम्मिलित है, इसलिए पर्ल को स्रोत से संकलित करना भी संभव है।{{cn|date=December 2020}}
विंडोज के अनुसार पर्ल को चलाने का [[cygwin|सिग्विन]] में एमुलेशन लेयर है। सिग्विन विंडोज पर यूनिक्स जैसा वातावरण प्रदान करता है, और सिग्विन सेट-अप प्रोग्राम में पर्ल और सीपीएएन दोनों मानक पूर्व-संकलित पैकेज के रूप में उपलब्ध हैं। चूंकि साइगविन में जीसीसी भी सम्मिलित है, इसलिए पर्ल को स्रोत से संकलित करना भी संभव है।{{cn|date=December 2020}}


अन्य स्क्रिप्टिंग टूल के साथ निर्देशिका में कई विंडोज रिसोर्स किट में पर्ल निष्पादन योग्य सम्मिलित है।{{cn|date=December 2020}}
अन्य स्क्रिप्टिंग टूल के साथ निर्देशिका में कई विंडोज रिसोर्स किट में पर्ल निष्पादन योग्य सम्मिलित है।{{cn|date=December 2020}}
Line 317: Line 317:
पर्ल 5 में, डेटाबेस इंटरफेस पर्ल डीबीआई मॉड्यूल द्वारा कार्यान्वित किए जाते हैं। डीबीआई (डेटाबेस इंटरफ़ेस) मॉड्यूल पर्ल अनुप्रयोगों के लिए एकल, डेटाबेस-स्वतंत्र इंटरफ़ेस दर्शाता है, जबकि डीबीडी (डेटाबेस ड्राइवर) मॉड्यूल लगभग 50 विभिन्न डेटाबेसों तक पहुँचने के विवरण को संभालता है; अधिकांश [[अमेरिकी राष्ट्रीय मानक संस्थान]] एसक्यूएल डेटाबेस के लिए डीबीडी ड्राइवर हैं।<ref>{{Cite book|last1=Bunce|first1=Tim|url=https://books.google.com/books?id=WfoOrfuwcb8C&q=The+DBI+(Database+Interface)+module+presents+a+single,+database-independent+interface+to+Perl+applications,+while+the+DBD+(Database+Driver)+modules+handle+the+details+of+accessing+some+50+different+databases;+there+are+DBD+drivers+for+most+ANSI+SQL+databases|title=पर्ल डीबीआई प्रोग्रामिंग: पर्ल के साथ डाटाबेस प्रोग्रामिंग|last2=Descartes|first2=Alligator|date=2000-02-04|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-1536-8|language=en}}</ref>
पर्ल 5 में, डेटाबेस इंटरफेस पर्ल डीबीआई मॉड्यूल द्वारा कार्यान्वित किए जाते हैं। डीबीआई (डेटाबेस इंटरफ़ेस) मॉड्यूल पर्ल अनुप्रयोगों के लिए एकल, डेटाबेस-स्वतंत्र इंटरफ़ेस दर्शाता है, जबकि डीबीडी (डेटाबेस ड्राइवर) मॉड्यूल लगभग 50 विभिन्न डेटाबेसों तक पहुँचने के विवरण को संभालता है; अधिकांश [[अमेरिकी राष्ट्रीय मानक संस्थान]] एसक्यूएल डेटाबेस के लिए डीबीडी ड्राइवर हैं।<ref>{{Cite book|last1=Bunce|first1=Tim|url=https://books.google.com/books?id=WfoOrfuwcb8C&q=The+DBI+(Database+Interface)+module+presents+a+single,+database-independent+interface+to+Perl+applications,+while+the+DBD+(Database+Driver)+modules+handle+the+details+of+accessing+some+50+different+databases;+there+are+DBD+drivers+for+most+ANSI+SQL+databases|title=पर्ल डीबीआई प्रोग्रामिंग: पर्ल के साथ डाटाबेस प्रोग्रामिंग|last2=Descartes|first2=Alligator|date=2000-02-04|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-1536-8|language=en}}</ref>


डीबीआई डेटाबेस हैंडल और प्रश्नों के लिए कैशिंग प्रदान करता है, जो लंबे समय तक चलने वाले निष्पादन वातावरण जैसे mod_perl, में प्रदर्शन में काफी सुधार कर सकता है।<ref>{{cite web |last = Bekman |first = Stas |title = Mod_perl के तहत डेटाबेस के साथ कुशल कार्य|url = http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |access-date = 2007-09-01 |archive-date = August 22, 2007 |archive-url = https://web.archive.org/web/20070822162513/http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |url-status = live }}</ref>उच्च मात्रा वाले सिस्टम को [[स्लैशडॉट प्रभाव]] के रूप में लोड स्पाइक्स को टालने में उच्च-वॉल्यूम सिस्टम की मदद करना।<ref>{{Cite book|last=Pachev|first=Sasha|url=https://books.google.com/books?id=vz6PcTdo8VUC&q=DBI+provides+caching+for+database+handles+and+queries,+which+can+greatly+improve+performance+in+long-lived+execution+environments+such+as+mod+perl,%5B100%5D+helping+high-volume+systems+avert+load+spikes+as+in+the+Slashdot+effect|title=MySQL आंतरिक को समझना: एक महान डाटाबेस की खोज और सुधार करना|date=2007-04-10|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55280-0|language=en}}</ref>
डीबीआई डेटाबेस हैंडल और प्रश्नों के लिए कैशिंग प्रदान करता है, जो लंबे समय तक चलने वाले निष्पादन वातावरण जैसे mod_perl, में प्रदर्शन में अधिक सुधार कर सकता है।<ref>{{cite web |last = Bekman |first = Stas |title = Mod_perl के तहत डेटाबेस के साथ कुशल कार्य|url = http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |access-date = 2007-09-01 |archive-date = August 22, 2007 |archive-url = https://web.archive.org/web/20070822162513/http://perl.apache.org/docs/1.0/guide/performance.html#Efficient_Work_with_Databases_under_mod_perl |url-status = live }}</ref>उच्च मात्रा वाले सिस्टम को [[स्लैशडॉट प्रभाव]] के रूप में लोड स्पाइक्स को रोकने में उच्च-वॉल्यूम सिस्टम की मदद करना।<ref>{{Cite book|last=Pachev|first=Sasha|url=https://books.google.com/books?id=vz6PcTdo8VUC&q=DBI+provides+caching+for+database+handles+and+queries,+which+can+greatly+improve+performance+in+long-lived+execution+environments+such+as+mod+perl,%5B100%5D+helping+high-volume+systems+avert+load+spikes+as+in+the+Slashdot+effect|title=MySQL आंतरिक को समझना: एक महान डाटाबेस की खोज और सुधार करना|date=2007-04-10|publisher="O'Reilly Media, Inc."|isbn=978-0-596-55280-0|language=en}}</ref>


आधुनिक पर्ल अनुप्रयोगों में, विशेष रूप से कैटेलिस्ट जैसे [[वेब ढांचा|वेब फ्रेमवर्क]] का उपयोग करके लिखे गए, डीबीआई मॉड्यूल का उपयोग प्रायः [[ऑब्जेक्ट-रिलेशनल मैपर|ऑब्जेक्ट-रिलेशनल मैपर्स]]  जैसे डीबीआईएक्स::क्लास, क्लास::डीबीआई के माध्यम से अप्रत्यक्ष रूप से किया जाता है।<ref>{{Cite web|url=https://metacpan.org/pod/Class::DBI|title=क्लास :: डीबीआई - सिंपल डेटाबेस एब्स्ट्रेक्शन - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806100410/https://metacpan.org/pod/Class::DBI|url-status=live}}</ref><ref>{{Cite web|url=https://metacpan.org/pod/Rose::DB::Object|title=गुलाब :: डीबी :: ऑब्जेक्ट - एक्स्टेंसिबल, उच्च प्रदर्शन ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम)। - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806085143/https://metacpan.org/pod/Rose::DB::Object|url-status=live}}</ref> जो एसक्यूएल प्रश्न उत्पन्न करता है और एप्लिकेशन लेखक को डेटा को पारदर्शी रूप से संभालता है।<ref>{{Cite web|title=टी एसक्यूएल डेवलपर संदर्भ पूछताछ|url=http://pdfpremiumfree.com/download/t-sql-querying-developer-reference-pdf/|access-date=2021-05-18|website=pdfpremiumfree.com|language=en}}</ref>
आधुनिक पर्ल अनुप्रयोगों में, विशेष रूप से कैटेलिस्ट जैसे [[वेब ढांचा|वेब फ्रेमवर्क]] का उपयोग करके लिखे गए, डीबीआई मॉड्यूल का उपयोग प्रायः [[ऑब्जेक्ट-रिलेशनल मैपर|ऑब्जेक्ट-रिलेशनल मैपर्स]]  जैसे डीबीआईएक्स::क्लास, क्लास::डीबीआई के माध्यम से अप्रत्यक्ष रूप से किया जाता है।<ref>{{Cite web|url=https://metacpan.org/pod/Class::DBI|title=क्लास :: डीबीआई - सिंपल डेटाबेस एब्स्ट्रेक्शन - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806100410/https://metacpan.org/pod/Class::DBI|url-status=live}}</ref><ref>{{Cite web|url=https://metacpan.org/pod/Rose::DB::Object|title=गुलाब :: डीबी :: ऑब्जेक्ट - एक्स्टेंसिबल, उच्च प्रदर्शन ऑब्जेक्ट-रिलेशनल मैपर (ओआरएम)। - metacpan.org|website=metacpan.org|access-date=2020-04-08|archive-date=August 6, 2020|archive-url=https://web.archive.org/web/20200806085143/https://metacpan.org/pod/Rose::DB::Object|url-status=live}}</ref> जो एसक्यूएल प्रश्न उत्पन्न करता है और एप्लिकेशन लेखक को डेटा को पारदर्शी रूप से संभालता है।<ref>{{Cite web|title=टी एसक्यूएल डेवलपर संदर्भ पूछताछ|url=http://pdfpremiumfree.com/download/t-sql-querying-developer-reference-pdf/|access-date=2021-05-18|website=pdfpremiumfree.com|language=en}}</ref>
Line 330: Line 330:
संकलित भाषाओं में समान कार्यक्रमों की तुलना में बड़े पर्ल प्रोग्राम अधिक धीरे-धीरे आरम्भ होते हैं क्योंकि पर्ल को सभी स्रोत को संकलित करना पड़ता है। वाईएपीसी::यूरोप 2005 सम्मेलन और उसके बाद के लेख ए टाइमली स्टार्ट में वार्ता में, जीन-लुइस लेरॉय ने पाया कि उनके पर्ल कार्यक्रमों को चलने में अपेक्षा से अधिक समय लगा क्योंकि पर्ल दुभाषिया ने अपने भीतर मॉड्यूल शोध में महत्वपूर्ण समय बिताया। ओवर-लार्ज में पथ सम्मिलित है।<ref>{{cite web |url = http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |title = एक सामयिक शुरुआत|author = Leroy, Jean-Louis |date = 2005-12-01 |publisher = O'Reilly |access-date = May 22, 2006 |archive-date = June 13, 2006 |archive-url = https://web.archive.org/web/20060613025623/http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |url-status = live }}</ref> जावा, पायथन और रूबी के विपरीत, पर्ल के पास पूर्व-संकलन के लिए केवल प्रायोगिक समर्थन है।<ref>{{cite web |url = https://metacpan.org/module/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |title = बी :: बाइटकोड पर्ल कंपाइलर का बाइटकोड बैकएंड|author1 = Beattie, Malcolm |author2 = Enache Adrian |name-list-style = amp |year = 2003 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = March 30, 2021 |archive-url = https://web.archive.org/web/20210330011632/https://metacpan.org/pod/release/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |url-status = live }}</ref> इसलिए, पर्ल प्रोग्राम सभी निष्पादन पर इस ओवरहेड पेनल्टी का भुगतान करते हैं। विशिष्ट कार्यक्रमों का वर्तमान चरण इतना लंबा है कि [[परिशोधित]] स्टार्टअप समय पर्याप्त नहीं है, लेकिन बहुत कम निष्पादन समय को मापने वाले बेंचमार्क इस ओवरहेड के कारण तिरछे होने की संभावना है।<ref>{{Cite book|last1=Schwartz|first1=Randal|url=https://books.google.com/books?id=va1PSgaO4xIC&q=Therefore,+Perl+programs+pay+this+overhead+penalty+on+every+execution.+The+run+phase+of+typical+programs+is+long+enough+that+amortized+startup+time+is+not+substantial,+but+benchmarks+that+measure+very+short+execution+times+are+likely+to+be+skewed+due+to+this+overhead.|title=लर्निंग पर्ल|last2=foy|first2=brian|last3=Phoenix|first3=Tom|date=2011-06-23|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-0358-7|language=en}}</ref>
संकलित भाषाओं में समान कार्यक्रमों की तुलना में बड़े पर्ल प्रोग्राम अधिक धीरे-धीरे आरम्भ होते हैं क्योंकि पर्ल को सभी स्रोत को संकलित करना पड़ता है। वाईएपीसी::यूरोप 2005 सम्मेलन और उसके बाद के लेख ए टाइमली स्टार्ट में वार्ता में, जीन-लुइस लेरॉय ने पाया कि उनके पर्ल कार्यक्रमों को चलने में अपेक्षा से अधिक समय लगा क्योंकि पर्ल दुभाषिया ने अपने भीतर मॉड्यूल शोध में महत्वपूर्ण समय बिताया। ओवर-लार्ज में पथ सम्मिलित है।<ref>{{cite web |url = http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |title = एक सामयिक शुरुआत|author = Leroy, Jean-Louis |date = 2005-12-01 |publisher = O'Reilly |access-date = May 22, 2006 |archive-date = June 13, 2006 |archive-url = https://web.archive.org/web/20060613025623/http://www.perl.com/pub/a/2005/12/21/a_timely_start.html |url-status = live }}</ref> जावा, पायथन और रूबी के विपरीत, पर्ल के पास पूर्व-संकलन के लिए केवल प्रायोगिक समर्थन है।<ref>{{cite web |url = https://metacpan.org/module/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |title = बी :: बाइटकोड पर्ल कंपाइलर का बाइटकोड बैकएंड|author1 = Beattie, Malcolm |author2 = Enache Adrian |name-list-style = amp |year = 2003 |publisher = [[CPAN]] |access-date = September 16, 2013 |archive-date = March 30, 2021 |archive-url = https://web.archive.org/web/20210330011632/https://metacpan.org/pod/release/NWCLARK/perl-5.8.8/ext/B/B/Bytecode.pm#KNOWN-BUGS |url-status = live }}</ref> इसलिए, पर्ल प्रोग्राम सभी निष्पादन पर इस ओवरहेड पेनल्टी का भुगतान करते हैं। विशिष्ट कार्यक्रमों का वर्तमान चरण इतना लंबा है कि [[परिशोधित]] स्टार्टअप समय पर्याप्त नहीं है, लेकिन बहुत कम निष्पादन समय को मापने वाले बेंचमार्क इस ओवरहेड के कारण तिरछे होने की संभावना है।<ref>{{Cite book|last1=Schwartz|first1=Randal|url=https://books.google.com/books?id=va1PSgaO4xIC&q=Therefore,+Perl+programs+pay+this+overhead+penalty+on+every+execution.+The+run+phase+of+typical+programs+is+long+enough+that+amortized+startup+time+is+not+substantial,+but+benchmarks+that+measure+very+short+execution+times+are+likely+to+be+skewed+due+to+this+overhead.|title=लर्निंग पर्ल|last2=foy|first2=brian|last3=Phoenix|first3=Tom|date=2011-06-23|publisher="O'Reilly Media, Inc."|isbn=978-1-4493-0358-7|language=en}}</ref>


इस स्थिति को सुधारने के लिए कई उपकरण प्रदर्शित किए गए हैं। पहला ऐसा उपकरण अपाचे का mod_perl था, जिसने सबसे आम कारणों में से एक को संबोधित करने की मांग की थी कि छोटे पर्ल प्रोग्राम तेजी से लागू किए गए थे: कॉमन गेटवे इंटरफेस [[वर्ल्ड वाइड वेब]] डेवलपमेंट। एक्टिवस्टेट, माइक्रोसॉफ्ट [[ISAPI|आईएसएपआई]] के माध्यम से, समान प्रदर्शन सुधार प्रदान करता है।<ref>{{Cite book|last1=Stein|first1=Lincoln|url=https://books.google.com/books?id=qyzTI_eAeHUC&q=A+number+of+tools+have+been+introduced+to+improve+this+situation.+The+first+such+tool+was+Apache's+mod+perl,+which+sought+to+address+one+of+the+most-common+reasons+that+small+Perl+programs+were+invoked+rapidly:+CGI+Web+development.+ActivePerl,+via+Microsoft+ISAPI,+provides+similar+performance+improvements.|title=पर्ल और सी के साथ अपाचे मॉड्यूल लिखना: अपाचे एपीआई और मॉड_पर्ल|last2=MacEachern|first2=Doug|date=1999|publisher="O'Reilly Media, Inc."|isbn=978-1-56592-567-0|language=en}}</ref>
इस स्थिति को सुधारने के लिए कई उपकरण प्रदर्शित किए गए हैं। पहला ऐसा उपकरण अपाचे का mod_perl था, जिसने सबसे सरल कारणों को संबोधित करने की डिमांड की थी कि छोटे पर्ल प्रोग्राम तीव्रता से लागू किए गए थे: कॉमन गेटवे इंटरफेस [[वर्ल्ड वाइड वेब]] डेवलपमेंट हैं। एक्टिवस्टेट, माइक्रोसॉफ्ट [[ISAPI|आईएसएपआई]] के माध्यम से, समान प्रदर्शन सुधार प्रदान करता है।<ref>{{Cite book|last1=Stein|first1=Lincoln|url=https://books.google.com/books?id=qyzTI_eAeHUC&q=A+number+of+tools+have+been+introduced+to+improve+this+situation.+The+first+such+tool+was+Apache's+mod+perl,+which+sought+to+address+one+of+the+most-common+reasons+that+small+Perl+programs+were+invoked+rapidly:+CGI+Web+development.+ActivePerl,+via+Microsoft+ISAPI,+provides+similar+performance+improvements.|title=पर्ल और सी के साथ अपाचे मॉड्यूल लिखना: अपाचे एपीआई और मॉड_पर्ल|last2=MacEachern|first2=Doug|date=1999|publisher="O'Reilly Media, Inc."|isbn=978-1-56592-567-0|language=en}}</ref>
एक बार पर्ल कोड संकलित हो जाने के बाद, निष्पादन चरण के समय अतिरिक्त ओवरहेड होता है जो सामान्यतः सी या सी ++ जैसी संकलित भाषाओं में लिखे गए प्रोग्राम के लिए सम्मिलित नहीं होता है। ऐसे ओवरहेड के उदाहरणों में [[बाईटकोड]] व्याख्या, संदर्भ-गिनती स्मृति प्रबंधन और गतिशील टाइप-चेकिंग सम्मिलित हैं।<ref>{{Cite book|last1=Bekman|first1=Stas|url=https://books.google.com/books?id=UDabAgAAQBAJ&q=Once+Perl+code+is+compiled,+there+is+additional+overhead+during+the+execution+phase+that+typically+isn't+present+for+programs+written+in+compiled+languages+such+as+C+or+C++.+Examples+of+such+overhead+include+bytecode+interpretation,+reference-counting+memory+management,+and+dynamic+type-checking.|title=प्रैक्टिकल मोड_पर्ल|last2=Cholet|first2=Eric|date=2003|publisher="O'Reilly Media, Inc."|isbn=978-0-596-00227-5|language=en}}</ref>
 
पर्ल कोड संकलित हो जाने के बाद, निष्पादन चरण के समय अतिरिक्त ओवरहेड होता है जो सामान्यतः सी या सी ++ जैसी संकलित भाषाओं में लिखे गए प्रोग्राम के लिए सम्मिलित नहीं होता है। ऐसे ओवरहेड के उदाहरणों में [[बाईटकोड]] व्याख्या, संदर्भ-गिनती स्मृति प्रबंधन और गतिशील टाइप-चेकिंग सम्मिलित हैं।<ref>{{Cite book|last1=Bekman|first1=Stas|url=https://books.google.com/books?id=UDabAgAAQBAJ&q=Once+Perl+code+is+compiled,+there+is+additional+overhead+during+the+execution+phase+that+typically+isn't+present+for+programs+written+in+compiled+languages+such+as+C+or+C++.+Examples+of+such+overhead+include+bytecode+interpretation,+reference-counting+memory+management,+and+dynamic+type-checking.|title=प्रैक्टिकल मोड_पर्ल|last2=Cholet|first2=Eric|date=2003|publisher="O'Reilly Media, Inc."|isbn=978-0-596-00227-5|language=en}}</ref>
 





Revision as of 21:10, 10 January 2023

पर्ल
File:Perl language logo.svg
ParadigmMulti-paradigm: functional, imperative, object-oriented (class-based), reflective
द्वारा डिज़ाइन किया गयाLarry Wall
DeveloperLarry Wall
पहली प्रस्तुतिDecember 18, 1987; 38 years ago (1987-12-18)[1]
Stable release
  • 5.36.0[2] / 28 May 2022; 4 years ago (2022-05-28)
  • 5.34.1[3] / 13 March 2022; 4 years ago (2022-03-13)
Preview release
5.37.6[4] / 21 November 2022; 3 years ago (2022-11-21)
टाइपिंग अनुशासनDynamic
कार्यान्वयन भाषाC
ओएसCross-platform
लाइसेंसArtistic License 1.0[5][6] or GNU General Public License[7]
फ़ाइल नाम एक्सटेंशनएस.plx, .pl, .pm, .xs, .t, .pod, .cgi
वेबसाइटperl.org
Influenced by
AWK, BASIC, C, C++, Lisp, sed, Unix shell[8]
Influenced
CoffeeScript,[citation needed] Groovy,[citation needed] JavaScript, Julia, LPC, PHP, Python, Raku, Ruby, PowerShell

पर्ल दो उच्च-स्तरीय, सामान्य-उद्देश्य, व्याख्या की गई, गतिशील प्रोग्रामिंग भाषाओं का परिवार है। पर्ल 5 को संदर्भित करता है, लेकिन 2000 से 2019 तक इसने स्वयं पुन: डिज़ाइन की गई सह-भाषा, पर्ल 6 को भी संदर्भित किया, इससे पहले कि अक्टूबर 2019 में बाद के नाम को सामान्यतः राकू (प्रोग्रामिंग भाषा) में परिवर्तन कर दिया गया।[9][10]

चूंकि पर्ल का सामान्यतः संक्षिप्त रूप नहीं है,[11] प्रैक्टिकल डेटा निकालना और रिपोर्टिंग भाषा सहित कई प्रकार से संक्षिप्त नाम का उपयोग किया जा रहा है।[12] पर्ल को लैरी वॉल द्वारा 1987 में सामान्य-उद्देश्य वाली यूनिक्स स्क्रिप्टिंग भाषा के रूप में विकसित किया गया था, जिससे कि रिपोर्ट प्रसंस्करण को सरल बनाया जा सके।[13] तत्पश्चात, इसमें कई परिवर्तन और संशोधन हुए हैं। राकू, जो 2000 में पर्ल 5 के नए स्वरूप के रूप में प्रारभ्म हुआ, अंततः भिन्न भाषा में विकसित हुआ। दोनों भाषाएँ भिन्न-भिन्न विकास टीमों द्वारा स्वतंत्र रूप से विकसित की जा रही हैं और उदारतापूर्वक एक-दूसरे से विचार उधार लेती हैं।

पर्ल भाषाएँ C(प्रोग्रामिंग भाषा), यूनिक्स शेल, AWK (प्रोग्रामिंग भाषा), और sed सहित अन्य प्रोग्रामिंग भाषाओं से सुविधाएँ उधार लेती हैं;[1] वे यूनिक्स कमांड की कई समकालीन सूची की मनमानी डेटा-लंबाई सीमा के बिना टेक्स्ट प्रोसेसिंग सुविधाएं प्रदान करते हैं।[14] पर्ल 5 ने 1990 के दशक के अंत में अपनी शक्तिशाली नियमित अभिव्यक्ति और स्ट्रिंग पार्सिंग क्षमताओं के कारण कॉमन गेटवे इंटरफ़ेस भाषा के रूप में व्यापक लोकप्रियता प्राप्त की।[15][16][17][18]

सीजीआई के अतिरिक्त, पर्ल 5 का उपयोग कार्यकारी प्रबंधक, नेटवर्क प्रोग्रामिंग, वित्त, जैव सूचना विज्ञान और अन्य अनुप्रयोगों जैसे ग्राफिकल यूज़र इंटरफ़ेस के लिए किया जाता है। इसके कोमलता और शक्ति के कारण इसे स्क्रिप्टिंग भाषाओं की स्विस आर्मी चेनसॉ का उपनाम दिया गया है,[19] और यह भी कि कुछ अन्य भाषाओं की तुलना में अधिक विशेष वर्णों के उपयोग के कारण कुरूपता पर विचार करते हैं।[20] 1998 में, इसे डक्ट टेप के रूप में भी संदर्भित किया गया था जो इंटरनेट को साथ रखता है, ग्लू भाषा के रूप में इसके सर्वव्यापी उपयोग और इसकी कथित अयोग्यता दोनों के संदर्भ में होते है।[21]

पर्ल अत्यधिक अभिव्यंजक प्रोग्रामिंग भाषा है: किसी दिए गए एल्गोरिथ्म के लिए स्रोत कोड लघु और अत्यधिक संकुचित हो सकता है।[22][23]


नाम

पर्ल को मूल रूप से "पर्ल" नाम दिया गया था। वॉल सकारात्मक अर्थों के साथ भाषा को लघु नाम देना चाहते थे। वॉल ने पर्ल के आधिकारिक प्रदर्शन से पहले वर्तमान समय में पर्ल प्रोग्रामिंग भाषा का शोध किया और नाम की वर्तनी में परिवर्तन कर दिया।[24]

पर्ल भाषा का वर्णन करते समय, नाम कैपिटलाइज़ होता है। प्रोग्राम का संदर्भ देते समय, नाम अनकैपिटलाइज्ड होता है क्योंकि अधिकांश यूनिक्स-जैसी फाइल सिस्टम केस-संवेदी होते हैं। प्रोग्रामिंग पर्ल के पहले संस्करण के प्रस्तावित होने से पहले, भाषा को पर्ल के रूप में संदर्भित करना सरल था। चूंकि, रैंडल एल. श्वार्ट्ज ने पुस्तक में भाषा के नाम को कैपिटलाइज़ किया जिससे टाइपसेट करते समय इसे अच्छे से प्रदर्शित किया जा सके। इस स्थिति के भेद को बाद में विहित के रूप में प्रलेखित किया गया था।[25]

नाम को कभी-कभी संक्षिप्त नाम के रूप में विस्तारित किया जाता है: प्रैक्टिकल एक्सट्रैक्शन तथा रिपोर्ट भाषा[26] और वॉल्स ओन पैथोलॉजिकली इक्लेक्टिक रबिश लिस्टर जो पर्ल के मैनुअल पेज में है।[27]


इतिहास

प्रारंभिक संस्करण

लैरी वॉल ने 1987 में पर्ल पर काम करना प्रारम्भ किया, जबकि यूनिसिस में 18 दिसंबर, 1987 को संस्करण 1.0 में प्रोग्रामर के रूप में काम कर रहे थे।[14][1]अगले कुछ वर्षों में भाषा का अधिक विस्तार हुआ।

1988 में प्रस्तावित हुई पर्ल 2 में अच्छा रेगुलर एक्सप्रेशन इंजन था। 1989 में प्रस्तावित पर्ल 3 ने बाइनरी डेटा स्ट्रीम के लिए समर्थन जोड़ा।[citation needed]

मूल रूप से, पर्ल के लिए दस्तावेज लंबा मैन पेज था। 1991 में, प्रोग्रामिंग पर्ल, जिसे कई पर्ल प्रोग्रामर अपने कवर के कारण कैमल बुक के रूप में जानते थे, प्रकाशित हुआ और भाषा के लिए वास्तविक संदर्भ बन गया। उसी समय, पर्ल संस्करण संख्या को 4 तक बढ़ा दिया गया था, भाषा में बड़े परिवर्तन को चिह्नित करने के लिए नहीं अन्यथा पुस्तक द्वारा अच्छी तरह से प्रलेखित संस्करण की पहचान करने के लिए था।[citation needed]


प्रारंभिक पर्ल 5

पर्ल 4 सुरक्षा प्रस्तावित की श्रृंखला के माध्यम से चला गया, 1993 में पर्ल 4.036 में समाप्त हुआ, जिसके बाद वॉल ने पर्ल 5 पर काम प्रारभ्म करने के लिए पर्ल 4 को छोड़ दिया। पर्ल 5 का प्रारंभिक डिजाइन 1994 में प्रस्तावित हुआ। पर्ल 5 पोर्टर्स मेलिंग लिस्ट की स्थापना मई 1994 में पर्ल 5 को भिन्न-भिन्न प्लेटफॉर्म पर पोर्ट करने के काम को समन्वित करने के लिए की गई थी।।[28]यह पर्ल 5 के विकास, सुरक्षा और पोर्टिंग के लिए प्राथमिक प्लेटफॉर्म बना हुआ है।

पर्ल 5.000 को 17 अक्टूबर 1994 को प्रस्तावित किया गया था।[29] यह दुभाषिया का लगभग पूर्ण पुनर्लेखन था, और इसने भाषा में कई नई सुविधाएँ जोड़ीं, जिनमें वस्तुएँ, संदर्भ, स्थानीय चर, शाब्दिक चर, और मॉड्यूलर सम्मलित हैं। महत्वपूर्ण रूप से, मॉड्यूल ने दुभाषिया को संशोधित किए बिना भाषा को विस्तारित करने के लिए तंत्र प्रदान किया। इसने कोर दुभाषिया को स्थिर करने की अनुमति दी, भले ही इसने साधारण पर्ल प्रोग्रामर को नई भाषा सुविधाओं को जोड़ने में सक्षम बनाया। पर्ल 5 सक्रिय विकास में है।

पर्ल 5.001 को 13 मार्च, 1995 को प्रस्तावित किया गया था। पर्ल 5.002 को 29 फरवरी, 1996 को नए प्रोटोटाइप विशेषता के साथ प्रस्तावित किया गया था। इसने मॉड्यूल लेखकों को उप-दिनचर्या बनाने की अनुमति दी। पर्ल 5.003 को सुरक्षा प्रस्तावित के रूप में 25 जून 1996 को प्रस्तावित किया गया था।[30]

पर्ल 5 इतिहास की सबसे महत्वपूर्ण घटनाओं में से भाषा के बाहर घटित हुई और यह इसके मॉड्यूल समर्थन का परिणाम था। 26 अक्टूबर 1995 को, व्यापक पर्ल आर्काइव नेटवर्क (सीपीएएन) को पर्ल भाषा और पर्ल मॉड्यूल के लिए सॉफ्टवेयर रिपॉजिटरी के रूप में स्थापित किया गया था, दिसंबर 2022 तक, इसके 43,865 वितरणों में 211,850 से अधिक मॉड्यूल हैं, जो 14,324 से अधिक लेखकों द्वारा लिखे गए हैं, और दुनिया भर में 245 से अधिक स्थानों पर दिखाई देते हैं।[31]

पर्ल 5.004 को 15 मई, 1997 को प्रस्तावित किया गया था, और इसमें अन्य बातों के अतिरिक्त, यूनिवर्सल पैकेज सम्मिलित था, जिसमें पर्ल को आधार वस्तु दी गई थी जिससे सभी वर्ग (कंप्यूटर प्रोग्रामिंग) स्वचालित रूप से प्राप्त हुए थे और मॉड्यूल के संस्करणों की आवश्यकता थी। अन्य महत्वपूर्ण विकास CGI.pm मॉड्यूल का समावेश था,[32] जिसने कॉमन गेटवे इंटरफेस के रूप में पर्ल की लोकप्रियता में योगदान दिया।[33]

पर्ल 5.004 ने माइक्रोसॉफ़्ट विंडोज़, प्लान 9, क्यूएनएक्स, और एमिगाओएस(AmigaOS) के लिए समर्थन जोड़ा।[32]

पर्ल 5.005 को 22 जुलाई 1998 को प्रस्तावित किया गया था। इस प्रस्तावित में रेगेक्स इंजन में कई संवर्द्धन, B::* मॉड्यूल के माध्यम से बैकएंड में नए हुक, qr// रेगेक्स उद्धरण ऑपरेटर, अन्य नए कोर मॉड्यूल का बड़ा चयन, और कई और ऑपरेटिंग सिस्टम के लिए अतिरिक्त समर्थन सम्मलित है, जिसमें बीओस((BeOS) हैं।[34]


2000–2020

Major version[29] Latest update[35]
Old version, no longer maintained: 5.4 1999-04-29
Old version, no longer maintained: 5.5 2004-02-23
Old version, no longer maintained: 5.6 2003-11-15
Old version, no longer maintained: 5.8 2008-12-14
Old version, no longer maintained: 5.10 2009-08-22
Old version, no longer maintained: 5.12 2012-11-10
Old version, no longer maintained: 5.14 2013-03-10
Old version, no longer maintained: 5.16 2013-03-11
Old version, no longer maintained: 5.18 2014-10-01
Old version, no longer maintained: 5.20 2015-09-12
Old version, no longer maintained: 5.22 2017-07-15
Old version, no longer maintained: 5.24 2018-04-14
Old version, no longer maintained: 5.26 2018-11-29
Old version, no longer maintained: 5.28 2020-06-01
Old version, no longer maintained: 5.30 2020-06-01
Old version, no longer maintained: 5.32 2021-01-23
Older version, yet still maintained: 5.34 2022-03-13
Current stable version: 5.36 2022-05-28
Latest preview version of a future release: 5.37 2022-10-20
Future release: 7.0 2023?
Legend:
Old version
Older version, still maintained
Current stable version
Latest preview version
Future release
</छोटा>

पर्ल 5.6 को 22 मार्च, 2000 को प्रस्तावित किया गया था। प्रमुख परिवर्तनों में 64-बिट समर्थन, यूनिकोड स्ट्रिंग प्रतिनिधित्व, 2 जीआईबी (GiB) से अधिक फ़ाइलों के लिए समर्थन और कीवर्ड सम्मिलित थे।[36][37] पर्ल 5.6 को विकसित करते समय, सॉफ्टवेयर वर्जनिंग संस्करण योजना को अन्य ओपन सोर्स परियोजनाओं के समान परिवर्तन का निर्णय लिया गया था; 5.005_63 के बाद, उचित संस्करण 5.5.640 बन गया, जिसमें विषम संख्या वाले विकास संस्करण और सम संख्या वाले स्थिर संस्करण की योजना थी।[38]

2000 में, वाल ने समुदाय से पर्ल के नए संस्करण के लिए सलाह का आह्वान किया। इस प्रक्रिया के परिणामस्वरूप 361 आरएफसी(RFC) दस्तावेज़ तैयार हुए जिनका उपयोग पर्ल 6 के विकास में मार्गदर्शन के लिए किया जाना था। पर्ल 6. 2001 में,[39] पर्ल 6 के लिए एपोकैलिप्स पर काम प्रारभ्म हुआ, दस्तावेजों की श्रृंखला जो परिवर्तन अनुरोधों को सारांशित करने और पर्ल की आगामी पीढ़ी के डिजाइन को दर्शाने के लिए था। उन्हें औपचारिक दस्तावेज़ के अतिरिक्त आरएफसी के डाइजेस्ट के रूप में दर्शाया गया था। इस बिंदु पर, पर्ल 6 केवल भाषा के विवरण के रूप में अस्तित्व में था।[citation needed]

पर्ल 5.8 पहली बार 18 जुलाई, 2002 को प्रस्तावित किया गया था, और उस समय से लगभग वार्षिक अद्यतन किया गया था। पर्ल 5.8 ने यूनिकोड समर्थन में सुधार किया, नया इनपुट/आउटपुट कार्यान्वयन जोड़ा,संख्यात्मक सटीकता में सुधार किया, और कई नए मॉड्यूल जोड़े।[40] 2013 तक यह संस्करण अभी भी पर्ल का सबसे लोकप्रिय संस्करण ब