पर्ल: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 222: Line 222:


=== कार्यान्वयन ===
=== कार्यान्वयन ===
पर्ल को एक कोर इंटरप्रेटर के रूप में लागू किया गया है, जिसे 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? -->
पर्ल को एक कोर इंटरप्रेटर के रूप में लागू किया गया है, जिसे 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|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 |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 |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

Revision as of 22:28, 6 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; 3 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 के एक नए स्वरूप के रूप में प्रारभ्म हुआ, अंततः एक अलग भाषा में विकसित हुआ। दोनों भाषाएँ अलग-अलग विकास टीमों द्वारा स्वतंत्र रूप से विकसित की जा रही हैं और उदारतापूर्वक एक-दूसरे से विचार उधार लेती हैं।

पर्ल भाषाएँ सी(प्रोग्रामिंग भाषा), यूनिक्स खोल, एडब्ल्यूके (प्रोग्रामिंग भाषा), और सेड सहित अन्य प्रोग्रामिंग भाषाओं से सुविधाएँ उधार लेती हैं;[1] वे यूनिक्स कमांड की कई समकालीन सूची की मनमानी डेटा-लंबाई सीमा के बिना टेक्स्ट प्रोसेसिंग सुविधाएं प्रदान करते हैं।[14] पर्ल 5 ने 1990 के दशक के अंत में अपनी शक्तिशाली नियमित अभिव्यक्ति और स्ट्रिंग (कंप्यूटिंग) पदच्छेद क्षमताओं के कारण एक कॉमन गेटवे इंटरफ़ेस भाषा के रूप में व्यापक लोकप्रियता प्राप्त की।[15][16][17][18] सीजीआई के अतिरिक्त, पर्ल 5 का उपयोग कार्यकारी प्रबंधक, कंप्यूटर नेटवर्क प्रोग्रामिंग, वित्त, जैव सूचना विज्ञान और अन्य अनुप्रयोगों जैसे ग्राफिकल यूज़र इंटरफ़ेस के लिए किया जाता है। इसे स्विस आर्मी चेनसॉ का उपनाम दिया गया है स्क्रिप्टिंग भाषाओं के लचीलेपन और शक्ति के कारण,[19] और वह भी जिसे कुछ लोग कुरूपता मानते हैं[20] कई अन्य भाषाओं की तुलना में इसके अधिक विशेष वर्णों के उपयोग के कारण। 1998 में, इसे डक्ट टेप के रूप में भी संदर्भित किया गया था जो इंटरनेट को एक साथ रखता है, एक गोंद भाषा के रूप में इसके सर्वव्यापी उपयोग और इसकी कथित अयोग्यता दोनों के संदर्भ में।[21] पर्ल एक अत्यधिक अभिव्यंजक शक्ति (कंप्यूटर विज्ञान) प्रोग्रामिंग भाषा है: किसी दिए गए एल्गोरिथ्म के लिए स्रोत कोड छोटा और अत्यधिक संकुचित हो सकता है।[22][23]


नाम

पर्ल को मूल रूप से "पर्ल" नाम दिया गया था। वॉल सकारात्मक अर्थों के साथ भाषा को एक छोटा नाम देना चाहते थे। वॉल ने पर्ल की आधिकारिक प्रदर्शन से पहले मौजूदा पर्ल (प्रोग्रामिंग भाषा) प्रोग्रामिंग भाषा की खोज की और नाम की वर्तनी बदल दी।[24] भाषा का वर्णन करते समय, नाम पूंजीकृत होता है: पर्ल। प्रोग्राम का संदर्भ देते समय, नाम अनकैपिटलाइज्ड (पर्ल) होता है क्योंकि अधिकांश यूनिक्स-जैसी फाइल सिस्टम केस-संवेदी होते हैं। प्रोग्रामिंग पर्ल के पहले संस्करण के जारी होने से पहले, भाषा को पर्ल के रूप में संदर्भित करना आम बात थी।चूंकि, रैंडल एल. श्वार्ट्ज ने पुस्तक में भाषा के नाम को पूंजीकृत किया ताकि टाइपसेट करते समय इसे बेहतर तरीके से प्रदर्शित किया जा सके। इस स्थिति के भेद को बाद में विहित के रूप में प्रलेखित किया गया था।[25] नाम को कभी-कभी संक्षिप्त नाम के रूप में विस्तारित किया जाता है: प्रैक्टिकल एक्सट्रैक्शन और रिपोर्ट भाषा[26] और वॉल्स ओन पैथोलॉजिकली इक्लेक्टिक रबिश लिस्टर जो पर्ल के मैनुअल पेज में है।[27]


इतिहास

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

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

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


अर्ली पर्ल 5

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

पर्ल 5.001 को 13 मार्च, 1995 को जारी किया गया था। पर्ल 5.002 को 29 फरवरी, 1996 को नए प्रोटोटाइप फीचर के साथ जारी किया गया था। इसने मॉड्यूल लेखकों को सबरूटीन्स बनाने की अनुमति दी जो पर्ल शेल निर्मित की तरह व्यवहार करते थे। पर्ल 5.003 को सुरक्षा रिलीज़ के रूप में 25 जून 1996 को रिलीज़ किया गया था।[30] पर्ल 5 इतिहास की सबसे महत्वपूर्ण घटनाओं में से एक भाषा के बाहर घटित हुई और यह इसके मॉड्यूल समर्थन का परिणाम था। 26 अक्टूबर 1995 को, सीपीएएन (सीपीएएन) को पर्ल भाषा और पर्ल मॉड्यूल के लिए एक सॉफ्टवेयर रिपॉजिटरी के रूप में स्थापित किया गया था; मई 2017 तक, इसमें 35,190 वितरणों में 185,178 से अधिक मॉड्यूल हैं, जो 13,071 से अधिक लेखकों द्वारा लिखे गए हैं, और दुनिया भर में 245 से अधिक स्थानों पर नजर आते हैं।[31] पर्ल 5.004 को 15 मई, 1997 को जारी किया गया था, और इसमें अन्य बातों के अतिरिक्त, यूनिवर्सल पैकेज सम्मिलित था, जिसमें पर्ल को एक आधार वस्तु दी गई थी जिससे सभी वर्ग (कंप्यूटर प्रोग्रामिंग) स्वचालित रूप से प्राप्त हुए थे और मॉड्यूल के संस्करणों की आवश्यकता की क्षमता थी। एक अन्य महत्वपूर्ण विकास CGI.pm मॉड्यूल का समावेश था,[32] जिसने कॉमन गेटवे इंटरफेस के रूप में पर्ल की लोकप्रियता में योगदान दिया।[33] पर्ल 5.004 ने माइक्रोसॉफ़्ट विंडोज़, बेल लैब्स, क्यूएनएक्स और एमिगाओएस से प्लान 9 के लिए समर्थन जोड़ा।[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-बिट कंप्यूटिंग|64-बिट समर्थन, यूनिकोड स्ट्रिंग प्रतिनिधित्व, 2 GiB से अधिक फ़ाइलों के लिए समर्थन और हमारा कीवर्ड सम्मिलित थे।[36][37] पर्ल 5.6 को विकसित करते समय, सॉफ्टवेयर वर्जनिंग योजना को अन्य ओपन सोर्स प्रोजेक्ट्स के समान एक में बदलने का निर्णय लिया गया था; 5.005_63 के बाद, अगला संस्करण 5.5.640 बन गया, जिसमें विषम संख्या वाले विकास संस्करण और सम संख्या वाले स्थिर संस्करण की योजना थी।[38] 2000 में, वाल ने समुदाय से पर्ल के एक नए संस्करण के लिए सुझावों का आह्वान किया। इस प्रक्रिया के परिणामस्वरूप 361 आरएफसी (टिप्पणियों के लिए अनुरोध) अधिकारपत्र तैयार हुए जिनका उपयोग पर्ल 6 के विकास में मार्गदर्शन के लिए किया जाना था। 2001 में,[39] पर्ल 6 के लिए सर्वनाश पर काम प्रारभ्म हुआ, अधिकारपत्रों की श्रृंखला जो परिवर्तन अनुरोधों को सारांशित करने और पर्ल की अगली पीढ़ी के डिजाइन को प्रस्तुत करने के लिए थी। उन्हें औपचारिक अधिकारपत्र के अतिरिक्त आरएफसी के डाइजेस्ट के रूप में प्रस्तुत किया गया था। इस बिंदु पर, पर्ल 6 केवल एक भाषा के विवरण के रूप में अस्तित्व में था।[citation needed] पर्ल 5.8 पहली बार 18 जुलाई, 2002 को जारी किया गया था, और तब से लगभग वार्षिक अद्यतन किया गया था। पर्ल 5.8 ने यूनिकोड समर्थन में सुधार किया, एक नया आई/ओ कार्यान्वयन जोड़ा, एक नया थ्रेड कार्यान्वयन जोड़ा, संख्यात्मक सटीकता में सुधार किया, और कई नए मॉड्यूल जोड़े।[40] 2013 तक यह संस्करण अभी भी पर्ल का सबसे लोकप्रिय संस्करण बना हुआ है और इसका उपयोग रेड हैट 5, Suse 10, सोलिरिस 10, एचपी-यूएक्स 11.31 और एआईएक्स 5 द्वारा किया जाता है।

2004 में, सारांश पर काम शुरू हुआ – अधिकारपत्र जो मूल रूप से सर्वनाश को सारांशित करते थे, लेकिन जो पर्ल 6 भाषा के लिए विनिर्देश बन गए। फरवरी 2005 में, ऑड्रे टैंग ने पग (प्रोग्रामिंग) पर काम करना प्रारभ्म किया, हास्केल (प्रोग्रामिंग भाषा) में लिखा गया एक पर्ल 6 दुभाषिया।[41] पर्ल 6 को वास्तविकता बनाने की दिशा में यह पहला ठोस प्रयास था। यह प्रयास 2006 में बंद हो गया।[42] PONIE पर्ल ऑन न्यू इंटरनल इंजन का संक्षिप्त नाम है। PONIE प्रोजेक्ट 2003 से 2006 तक अस्तित्व में था और पर्ल 5 और पर्ल 6 के बीच एक सेतु बनना था। यह Parrot वर्चुअल मशीन, पर्ल तोता आभासी मशीन पर चलने के लिए पर्ल 5 दुभाषिया को फिर से लिखने का एक प्रयास था। लक्ष्य दुनिया भर की हजारों कंपनियों में पर्ल 5 कोड की लाखों लाइनों का भविष्य सुनिश्चित करना था।[43] PONIE परियोजना 2006 में समाप्त हो गई और अब इसे सक्रिय रूप से विकसित नहीं किया जा रहा है। PONIE के हिस्से के रूप में पर्ल 5 दुभाषिया में किए गए कुछ सुधारों को उस परियोजना में जोड़ दिया गया था।[44] 18 दिसम्बर 2007 को पर्ल 1.0, पर्ल 5.10.0 की 20वीं वर्षगांठ जारी की गई। पर्ल 5.10.0 में उल्लेखनीय नई विशेषताएं सम्मिलित हैं, जो इसे पर्ल 6 के करीब लाती हैं। इनमें एक स्विच स्टेटमेंट (जिसे दिया गया / कब कहा जाता है), रेगुलर एक्सप्रेशन अपडेट और स्मार्ट मैच ऑपरेटर (~~) सम्मिलित हैं।[45][46] इसी समय के आसपास, तोता आभासी मशीन के साथ मिलकर विकसित, स्वर्ग के रूप में ज्ञात पर्ल 6 के एक और कार्यान्वयन पर विकास आरम्भ हुआ। नवंबर 2009 तक, राकुडो पर्ल की मासिक प्रदर्शन नियमित रूप से होता रहा है और अब यह पर्ल 6 का सबसे पूर्ण कार्यान्वयन है।

पर्ल 5 की विकास प्रक्रिया में एक बड़ा परिवर्तन पर्ल 5.11 के साथ हुआ; विकास समुदाय स्थिर रिलीज़ के वार्षिक शेड्यूल के साथ, विकास रिलीज़ के मासिक रिलीज़ चक्र में बदल