پرل

از ویکیپدیا، دانشنامه آزاد
پرش به ناوبری پرش به جستجو

پرل
Perl language logo.svg
الگوچند پارادایم : عملکردی ، امری ، شی گرا ( کلاس محوربازتابی
طراحی شده توسطلری وال
توسعه دهندهلری وال
اولین بار ظاهر شد1 بهمن 1367 ; 33 سال پیش [1] (1988-02-01)
انتشار پایدار
  • 5.34.0 [2] / 20 مه 2021 ؛ 5 ماه پیش (2021-05-20)
  • 5.32.1 [3] / 23 ژانویه 2021 ; 9 ماه قبل (2021-01-23)
پیش نمایش انتشار
5.35.5 [4] / 21 اکتبر 2021 ; 19 روز پیش (2021-10-21)
نظم و انضباط تایپپویا
زبان پیاده سازیسی
سیستم عاملکراس پلت فرم
مجوزمجوز هنری 1.0 [5] [6] یا مجوز عمومی عمومی گنو [7]
پسوند نام فایلplx، .pl، .pm، .xs، .t، .pod، .cgi
سایت اینترنتیwww .perl .org
تحت تأثیر
AWK ، BASIC ، C ، C++ ، Lisp ، sed ، پوسته Unix [8]
تحت تأثیر قرار گرفت
CoffeeScript , [ نیاز به نقل قول ] Groovy , [ نیاز به نقل قول ] جاوا اسکریپت , جولیا , LPC , PHP , Python , Raku , Ruby , PowerShell

پرل یک خانواده از دو زبان برنامه نویسی سطح بالا ، همه منظوره ، تفسیر شده و پویا است . «پرل» به Perl 5 اشاره دارد، اما از سال 2000 تا 2019 به «زبان خواهر» بازطراحی شده آن، Perl 6 نیز اشاره دارد، قبل از اینکه نام دومی به طور رسمی در اکتبر 2019 به Raku تغییر کند. [9] [10]

اگرچه پرل است رسما مخفف نیست، [11] هستند مختلف وجود دارد backronyms در استفاده، از جمله "عملی استخراج و گزارش زبان". [12] Perl توسط لری وال در سال 1987 به عنوان یک زبان برنامه نویسی همه منظوره یونیکس برای آسان کردن پردازش گزارش توسعه یافت. [13] از آن زمان تاکنون، دستخوش تغییرات و بازنگری های بسیاری شده است. راکو که با طراحی مجدد Perl 5 در سال 2000 آغاز شد، در نهایت به یک زبان جداگانه تبدیل شد. هر دو زبان به طور مستقل توسط تیم های توسعه مختلف توسعه می یابند و به طور آزادانه ایده هایی را از یکدیگر قرض می گیرند.

زبان‌های پرل ویژگی‌هایی را از زبان‌های برنامه‌نویسی دیگر از جمله C ، پوسته اسکریپت ( shAWK و sed به عاریت گرفته‌اند . [14] آنها امکانات پردازش متن را بدون محدودیت های دلخواه طول داده بسیاری از ابزارهای خط فرمان یونیکس معاصر فراهم می کنند. [15] Perl 5 در اواخر دهه 1990 به عنوان یک زبان برنامه نویسی CGI محبوبیت گسترده ای به دست آورد ، تا حدی به دلیل بیان منظم بی نظیر و توانایی های تجزیه رشته آن . [16] [17] [18] [19]

علاوه بر CGI، Perl 5 برای مدیریت سیستم ، برنامه نویسی شبکه ، امور مالی، بیوانفورماتیک و برنامه های کاربردی دیگر مانند GUI استفاده می شود . به دلیل انعطاف پذیری و قدرت، [20] و همچنین زشتی، به آن لقب «اره برقی ارتش سوئیس زبان های خط نویسی» داده اند . [21] در سال 1998، با اشاره به استفاده همه جا از آن به عنوان زبان چسب و بی ظرافت درک شده آن، به عنوان " نوار چسبنده که اینترنت را در کنار هم نگه می دارد " نیز نامیده شد . [22]

Perl یک زبان برنامه نویسی بسیار رسا است: کد منبع برای یک الگوریتم معین می تواند کوتاه و بسیار فشرده باشد. [23] [24]

نام

پرل در ابتدا "مروارید" نام داشت. وال می خواست نام کوتاهی با مفاهیم مثبت به این زبان بدهد. Wall زبان برنامه نویسی موجود PEARL را قبل از انتشار رسمی پرل کشف کرد و املای نام را تغییر داد. [25]

هنگام ارجاع به زبان، نام با حروف بزرگ نوشته می شود: Perl . هنگامی که به خود برنامه اشاره می شود، نام آن بدون حروف بزرگ ( perl ) است، زیرا اکثر سیستم های فایل مشابه یونیکس به حروف بزرگ و کوچک حساس هستند. قبل از انتشار اولین نسخه برنامه نویسی پرل ، معمولاً به این زبان به عنوان perl اشاره می شد . با این حال، راندال ال. شوارتز ، نام این زبان را در کتاب با حروف بزرگ نوشته است تا هنگام تایپ کردن، برجسته تر شود. این تمایز موردی متعاقباً به عنوان متعارف ثبت شد. [26]

این نام گهگاه به عنوان مخفف گسترش می‌یابد : زبان استخراج و گزارش عملی [27] و فهرست زباله‌های التقاطی آسیب‌شناسی خود وال که در صفحه راهنمای پرل است. [28]

تاریخچه

نسخه های اولیه

لری وال کار بر روی Perl را در سال 1987 آغاز کرد، در حالی که به عنوان برنامه نویس در Unisys کار می کرد ، [15] و نسخه 1.0 در 1 فوریه 1988 برای گروه خبری comp.sources.unix منتشر شد . [1] این زبان به سرعت در چند سال بعد گسترش یافت. سال ها.

Perl 2 که در سال 1988 منتشر شد، دارای موتور بیان منظم بهتری بود. Perl 3 که در سال 1989 منتشر شد، پشتیبانی از جریان های داده باینری را اضافه کرد . [ نیازمند منبع ]

در اصل، تنها سند برای پرل یک صفحه مرد طولانی بود . در سال 1991، برنامه نویسی پرل ، که برای بسیاری از برنامه نویسان پرل به دلیل جلد آن به عنوان "کتاب شتر" شناخته می شود، منتشر شد و تبدیل به مرجع واقعی این زبان شد. در همان زمان، شماره نسخه پرل به 4 رسید، نه برای نشان دادن تغییر عمده در زبان، بلکه برای شناسایی نسخه ای که به خوبی توسط کتاب مستند شده بود. [ نیازمند منبع ]

Early Perl 5

Perl 4 یک سری از انتشارات تعمیر و نگهداری را پشت سر گذاشت که به Perl 4.036 در سال 1993 ختم شد، پس از آن وال Perl 4 را رها کرد تا کار بر روی Perl 5 را شروع کند. طراحی اولیه Perl 5 تا سال 1994 ادامه یافت. لیست پستی perl5-porters در می 1994 ایجاد شد. هماهنگی کار بر روی انتقال Perl 5 به پلتفرم های مختلف. این انجمن اصلی برای توسعه، نگهداری و انتقال Perl 5 باقی می ماند. [29]

Perl 5.000 در 17 اکتبر 1994 منتشر شد. [30] این یک بازنویسی تقریباً کامل از مفسر بود ، و بسیاری از ویژگی‌های جدید را به زبان اضافه کرد، از جمله اشیاء ، مراجع ، متغیرهای واژگانی (my) و ماژول‌ها . مهمتر از همه، ماژول ها مکانیزمی را برای گسترش زبان بدون تغییر مفسر ارائه کردند. این اجازه می دهد تا مفسر اصلی تثبیت شود، حتی زمانی که برنامه نویسان معمولی پرل را قادر می ساخت تا ویژگی های زبان جدیدی را اضافه کنند. Perl 5 از آن زمان در حال توسعه فعال بوده است. [ نیازمند منبع ]

Perl 5.001 در 13 مارس 1995 منتشر شد. Perl 5.002 در 29 فوریه 1996 با ویژگی نمونه های جدید عرضه شد. این به نویسندگان ماژول اجازه می داد تا زیر روال هایی را بسازند که مانند سازه های Perl رفتار کنند . Perl 5.003 در 25 ژوئن 1996 به عنوان نسخه امنیتی منتشر شد. [ نیازمند منبع ]

یکی از مهمترین رویدادها در تاریخچه پرل 5 خارج از زبان مناسب و نتیجه پشتیبانی ماژول آن بود. در 26 اکتبر 1995، شبکه جامع آرشیو پرل (CPAN) به عنوان یک مخزن برای زبان پرل و ماژول های پرل تأسیس شد . تا می 2017، بیش از 185178 ماژول در 35190 توزیع، توسط بیش از 13071 نویسنده نوشته شده است و در سراسر جهان در بیش از 245 مکان منعکس شده است. [31]

Perl 5.004 در 15 مه 1997 منتشر شد و از جمله شامل بسته UNIVERSAL بود که به پرل یک شی پایه داد که تمام کلاس ها به طور خودکار از آن مشتق شدند و توانایی نیاز به نسخه های ماژول ها را داشت. پیشرفت مهم دیگر گنجاندن ماژول CGI.pm [32] بود که به محبوبیت پرل به عنوان یک زبان برنامه نویسی CGI کمک کرد . [33]

Perl 5.004 پشتیبانی از Microsoft Windows ، Plan 9 ، QNX و AmigaOS را اضافه کرد . [32]

Perl 5.005 در 22 ژوئیه 1998 منتشر شد. این نسخه شامل چندین پیشرفت در موتور regex ، قلاب‌های جدید به پشتیبان از طریق B::*ماژول‌ها، qr//عملگر نقل قول regex، مجموعه بزرگی از دیگر ماژول‌های اصلی جدید و پشتیبانی اضافه برای چندین عملیات دیگر بود. سیستم ها، از جمله BeOS . [34]

2000–2020

نسخه اصلی [35] آخرین به روز رسانی [36]
Old version, no longer maintained: 5.4 29-04-1999
Old version, no longer maintained: 5.5 29/03/1999
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/23
Old version, no longer maintained: 5.12 2012-11-10
Old version, no longer maintained: 5.14 10/03/2013
Old version, no longer maintained: 5.16 11/03/2013
Old version, no longer maintained: 5.18 02/10/2014
Old version, no longer maintained: 5.20 12/09/2015
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 01-06-2020
Old version, no longer maintained: 5.30 01-06-2020
Older version, yet still maintained: 5.32 2021-01-23
Current stable version: 5.34 2021-05-20
Latest preview version of a future release: 5.35 2021-05-21
Future release: 5.36 2022-05-20
Future release: 7.0 2022؟
Legend:
نسخه قدیمی نسخه
قدیمی، هنوز حفظ می شود
نسخه پایدار فعلی
آخرین نسخه پیش نمایش نسخه
آینده

Perl 5.6 در 22 مارس 2000 منتشر شد. تغییرات عمده شامل پشتیبانی 64 بیتی ، نمایش رشته یونیکد ، پشتیبانی از فایل های بیش از 2 گیگابایت و کلمه کلیدی "ما" بود. [37] [38] هنگام توسعه Perl 5.6، تصمیم گرفته شد که طرح نسخه‌سازی را به طرحی مشابه دیگر پروژه‌های منبع باز تغییر دهیم. بعد از 5.005_63، نسخه بعدی 5.5.640 شد، با برنامه ریزی برای نسخه های توسعه دهنده اعداد فرد و نسخه های پایدار دارای اعداد زوج. [ نیازمند منبع ]

در سال 2000، وال فراخوانی برای پیشنهاد نسخه جدیدی از Perl از طرف انجمن داد. این فرآیند منجر به 361 سند RFC (درخواست نظرات) شد که قرار بود در هدایت توسعه Perl 6 استفاده شود. در سال 2001، [39] کار بر روی "Apocalypses" برای Perl 6 آغاز شد، مجموعه ای از اسناد به منظور خلاصه کردن تغییرات. طرح نسل بعدی پرل را درخواست و ارائه می کند. آنها به جای یک سند رسمی به عنوان خلاصه ای از RFC ها ارائه شدند. در این مرحله، Perl 6 فقط به عنوان توصیف یک زبان وجود داشت. [ نیازمند منبع ]

Perl 5.8 اولین بار در 18 ژوئیه 2002 منتشر شد و از آن زمان تقریباً سالانه به روز رسانی شد. Perl 5.8 پشتیبانی یونیکد را بهبود بخشید، پیاده‌سازی ورودی/خروجی جدید، پیاده‌سازی رشته جدید، دقت عددی را بهبود بخشید و چندین ماژول جدید اضافه کرد. [40] از سال 2013، این نسخه همچنان محبوب‌ترین نسخه پرل است و توسط Red Hat 5، Suse 10، Solaris 10، HP-UX 11.31 و AIX 5 استفاده می‌شود. [ نیازمند منبع ]

در سال 2004، کار بر روی "Synopses" آغاز شد - اسنادی که در ابتدا خلاصه ای از آخرالزمان بودند، اما مشخصات زبان Perl 6 شدند. در فوریه 2005، آدری تانگ کار بر روی Pugs را آغاز کرد ، مترجم پرل 6 که در هاسکل نوشته شده بود . [41] این اولین تلاش هماهنگ برای تحقق Perl 6 بود. این تلاش در سال 2006 متوقف شد. [42]

پونی مخفف Perl On New Internal Engine است. پروژه PONIE از سال 2003 تا 2006 وجود داشت و قرار بود پلی بین پرل 5 و پرل 6 باشد. این تلاشی بود برای بازنویسی مفسر پرل 5 تا روی Parrot ، ماشین مجازی پرل 6 اجرا شود. هدف اطمینان از آینده میلیون ها خط کد پرل 5 در هزاران شرکت در سراسر جهان بود. [43] پروژه PONIE در سال 2006 به پایان رسید و دیگر به طور فعال در حال توسعه نیست. برخی از بهبودهایی که در مفسر پرل 5 به عنوان بخشی از PONIE انجام شد، در آن پروژه قرار گرفتند. [44]

در 18 دسامبر 2007، بیستمین سالگرد Perl 1.0، Perl 5.10.0 منتشر شد. Perl 5.10.0 شامل ویژگی‌های جدید قابل توجهی بود که آن را به Perl 6 نزدیک‌تر کرد. این ویژگی‌ها شامل یک عبارت سوئیچ (به نام "given"/"when")، به‌روزرسانی‌های عبارات منظم، و عملگر مطابقت هوشمند (~~) بود. [45] [46] در همان زمان، توسعه به طور جدی در اجرای دیگری از Perl 6 که به نام Rakudo Perl شناخته می‌شود ، آغاز شد که همراه با ماشین مجازی Parrot توسعه یافت . از نوامبر 2009، Rakudo Perl به طور منظم ماهانه منتشر شده است و در حال حاضر کامل ترین اجرای Perl 6 است.

یک تغییر عمده در روند توسعه Perl 5 با Perl 5.11 رخ داد. جامعه توسعه به چرخه انتشار ماهانه نسخه های توسعه، با برنامه سالانه نسخه های پایدار تغییر کرده است. بر اساس آن طرح، انتشار نقطه رفع اشکال هر سه ماه یک بار از نسخه های پایدار پیروی می کند. [ نیازمند منبع ]

در 12 آوریل 2010، Perl 5.12.0 منتشر شد. پیشرفت‌های اصلی مهم عبارتند از package NAME VERSIONنحو جدید ، اپراتور Yada Yada (در نظر گرفته شده برای علامت‌گذاری کد متغیرهایی که هنوز پیاده‌سازی نشده است)، سخت‌گیری‌های ضمنی، انطباق کامل با Y2038 ، اضافه‌بار تبدیل regex، پشتیبانی از DTrace و Unicode 5.2. [47] در 21 ژانویه 2011، Perl 5.12.3 منتشر شد. این شامل ماژول های به روز شده و برخی تغییرات اسناد است. [48] نسخه 5.12.4 در 20 ژوئن 2011 منتشر شد. آخرین نسخه آن شاخه، 5.12.5، در 10 نوامبر 2012 منتشر شد. [ نیاز به نقل از ]

در 14 می 2011، Perl 5.14 با پشتیبانی داخلی JSON منتشر شد . [49]

در 20 می 2012، Perl 5.16 منتشر شد. ویژگی‌های جدید قابل توجه عبارتند از توانایی مشخص کردن نسخه معینی از Perl که می‌خواهید شبیه‌سازی شود، به کاربران اجازه می‌دهد نسخه‌های خود را از Perl ارتقا دهند، اما همچنان اسکریپت‌های قدیمی را اجرا کنند که معمولاً ناسازگار هستند. [50] Perl 5.16 همچنین هسته را برای پشتیبانی از Unicode 6.1 به روز می کند. [50]

در 18 می 2013، Perl 5.18 منتشر شد. ویژگی‌های جدید قابل توجه عبارتند از قلاب‌های جدید dtrace، زیربناهای لغوی، CORE:: زیربناهای بیشتر، تعمیرات اساسی هش به دلایل امنیتی، پشتیبانی از Unicode 6.2. [51]

در 27 می 2014، Perl 5.20 منتشر شد. ویژگی‌های جدید قابل توجه عبارتند از امضاهای زیر روال، برش‌های هش/ نحو برش جدید، عدم ارجاع پسوند (تجربی)، Unicode 6.3، rand() با استفاده از مولد اعداد تصادفی سازگار. [52]

برخی از ناظران انتشار Perl 5.10 را با شروع جنبش مدرن پرل می دانند. [53] به طور خاص، این عبارت سبکی از توسعه را توصیف می‌کند که استفاده از CPAN را در بر می‌گیرد، از پیشرفت‌های اخیر در زبان بهره می‌برد و در مورد ایجاد کد با کیفیت بالا سختگیرانه است. [54] در حالی که کتاب "پرل مدرن" [55] ممکن است بارزترین پرچمدار این ایده باشد، گروه های دیگری مانند سازمان پرل روشنگر [56] علت را بر عهده گرفته اند.

در اواخر سال 2012 و 2013، چندین پروژه برای اجرای جایگزین برای Perl 5 آغاز شد: Perl5 در Perl6 توسط تیم Rakudo Perl، [57] moe توسط Stevan Little و دوستان، [58] p2 [59] توسط تیم Perl11 تحت Reini Urban، gperl توسط goccy، [60] و rperl، یک پروژه Kickstarter به رهبری ویل براسول و وابسته به پروژه Perll11. [61]

2020 به بعد

در ژوئن 2020، Perl 7 به عنوان جانشین Perl 5 اعلام شد. [62] Perl 7 در ابتدا بر اساس Perl 5.32 ساخته می شد و انتظار می رفت در نیمه اول سال 2021 منتشر شود و نامزدها زودتر منتشر شود. [63] این طرح در ماه مه 2021، بدون هیچ گونه چارچوب زمانی انتشار یا نسخه ای از Perl 5 برای استفاده به عنوان خط پایه، بازنگری شد. [64] هنگامی که Perl 7 منتشر شد، Perl 5 به تعمیر و نگهداری طولانی مدت خواهد رفت. با این حال، نسخه‌های پشتیبانی‌شده Perl 5 همچنان امنیت مهم و رفع اشکال را دریافت می‌کنند. [65]

نمادها

شتر

نماد شتر مورد استفاده اوریلی مدیا

برنامه نویسی Perl که توسط O'Reilly Media منتشر شده است ، تصویری از یک شتر دریچه ای را روی جلد دارد و معمولاً "کتاب شتر" نامیده می شود. [66] این تصویر به نماد غیر رسمی پرل و همچنین یک نشان عمومی هکر تبدیل شده است که بر روی تی شرت ها و سایر اقلام لباس ظاهر می شود. [ نیازمند منبع ]

O'Reilly مالک این تصویر به عنوان یک علامت تجاری است، اما مجوز آن را برای استفاده غیرتجاری صادر می کند، که فقط به تأیید و پیوند به www.perl.com نیاز دارد. صدور مجوز برای استفاده تجاری به صورت موردی تصمیم گیری می شود. [67] O'Reilly همچنین آرم های "Programming Republic of Perl" را برای سایت های غیر تجاری و دکمه های "Powered by Perl" را برای هر سایتی که از Perl استفاده می کند ارائه می دهد. [67]

پیاز

لوگوی پیاز مورد استفاده بنیاد پرل

بنیاد پرل صاحب یک نماد جایگزین، پیاز، که آن را به شرکتهای تابعه آن، اجازه ها و پروانه پرل افروزان ، PerlMonks ، Perl.org، و دیگران. [68] نماد یک جناس بصری در پیاز مروارید است . [69]

رپتور

لوگوی جایگزین پرل 5

سباستین ریدل، خالق Mojolicious ، لوگویی ایجاد کرد که یک دایناسور رپتور را نشان می‌دهد ، که تحت مجوز CC-SA، نسخه 4.0 در دسترس است. [70] آنالوگ رپتور از یک سری صحبت‌هایی می‌آید که توسط مت اس تروت در سال 2010 آغاز شد. [71]

نمای کلی

به گفته وال، پرل دو شعار دارد. اولین مورد " بیش از یک راه برای انجام آن وجود دارد" است که معمولاً به عنوان TMTOWTDI شناخته می شود. شعار دوم «کارهای آسان باید آسان باشد و چیزهای سخت باید ممکن باشد». [15]

ویژگی ها

ساختار کلی پرل مشتق شده به طور گسترده از C. پرل است رویه در طبیعت، با متغیرهای ، عبارت ، جملات انتساب ، بند -delimited بلوک ، ساختارهای کنترل و زیرروالهای . [72]

پرل همچنین ویژگی هایی را از برنامه نویسی پوسته می گیرد. همه متغیرها با sigil های اصلی مشخص شده اند که به متغیرها اجازه می دهد مستقیماً در رشته ها درون یابی شوند . با این حال، بر خلاف پوسته، پرل از sigil در همه دسترسی‌ها به متغیرها استفاده می‌کند و برخلاف بسیاری از زبان‌های برنامه‌نویسی دیگر که از sigil استفاده می‌کنند، sigil نشان دهنده نوع متغیر نیست، بلکه نوع عبارت را نشان می‌دهد. بنابراین برای مثال، در حالی که یک آرایه با علامت "@" نشان داده می شود (مثلاً @arrayname)، یک عضو مجزا از آرایه با علامت اسکالر "$" نشان داده می شود (مثلا $arrayname[3]). پرل همچنین دارای بسیاری از توابع داخلی است که ابزارهایی را ارائه می دهد که اغلب در برنامه نویسی پوسته استفاده می شوند (اگرچه بسیاری از این ابزارها توسط برنامه های خارج از پوسته پیاده سازی می شوند) مانند مرتب سازیو فراخوانی امکانات سیستم عامل . [ نیازمند منبع ]

پرل هش ها ("آرایه های انجمنی") را از AWK و عبارات منظم را از sed می گیرد . اینها بسیاری از وظایف تجزیه، مدیریت متن و مدیریت داده را ساده می کند. اشتراک گذاری شده با Lisp ، بازگشت ضمنی آخرین مقدار در یک بلوک است، و تمام عبارات نیز عباراتی هستند که می توانند در خود عبارات بزرگتر استفاده شوند. [ نیازمند منبع ]

Perl 5 ویژگی هایی اضافه کرد که از ساختارهای داده پیچیده ، توابع درجه یک (یعنی بسته شدن به عنوان مقادیر) و یک مدل برنامه نویسی شی گرا پشتیبانی می کند. اینها شامل ارجاعات ، بسته‌ها، ارسال روش مبتنی بر کلاس ، و متغیرهای دارای دامنه لغوی ، همراه با دستورالعمل‌های کامپایلر (به عنوان مثال، strict پراگما ) است. یکی از ویژگی‌های اضافی که با Perl 5 معرفی شد، توانایی بسته‌بندی کد به عنوان ماژول‌های قابل استفاده مجدد بود. وال بعداً اظهار داشت که "هدف کل سیستم ماژول پرل 5 تشویق رشد فرهنگ پرل بود تا هسته پرل." [73]

تمام نسخه های Perl تایپ خودکار داده ها و مدیریت خودکار حافظه را انجام می دهند . مفسر نوع و نیازهای ذخیره سازی هر شی داده در برنامه را می داند . در صورت لزوم با استفاده از شمارش مرجع برای آنها ذخیره و آزاد می کند (بنابراین نمی تواند ساختارهای داده دایره ای را بدون مداخله دستی توزیع کند). تبدیل نوع قانونی - به عنوان مثال، تبدیل از عدد به رشته - به طور خودکار در زمان اجرا انجام می شود . تبدیل نوع غیرقانونی خطاهای مهلکی هستند. [ نیازمند منبع ]

طراحی

طراحی پرل را می توان به عنوان پاسخی به سه گرایش گسترده در صنعت کامپیوتر درک کرد: کاهش هزینه های سخت افزاری، افزایش هزینه های نیروی کار و پیشرفت در فناوری کامپایلر . بسیاری از زبان‌های رایانه‌ای قبلی، مانند Fortran و C، هدفشان استفاده مؤثر از سخت‌افزار گران‌قیمت رایانه بود. در مقابل، Perl طوری طراحی شد که برنامه نویسان کامپیوتر بتوانند برنامه ها را سریعتر و راحت تر بنویسند. [ نیازمند منبع ]

پرل دارای ویژگی های بسیاری است که کار برنامه نویس را با هزینه بیشتر CPU و حافظه مورد نیاز آسان می کند. اینها شامل مدیریت خودکار حافظه است. تایپ پویا ؛ رشته ها، لیست ها و هش ها. عبارات با قاعده؛ درون نگری ; و یک eval()تابع پرل از نظریه «بدون محدودیت داخلی» [66] پیروی می کند، ایده ای شبیه به قانون صفر و یک بی نهایت . [ نیازمند منبع ]

وال به عنوان یک زبان شناس آموزش دیده است و طراحی پرل بسیار بر اساس اصول زبانی است. مثال‌ها عبارتند از کدنویسی هافمن (ساختارهای رایج باید کوتاه باشند)، وزن پایانی خوب (اطلاعات مهم باید اول باشند)، و مجموعه بزرگی از زبان‌های اولیه . پرل از ساختارهای زبانی که نوشتن مختصر و طبیعی برای انسان هستند، حتی در مواردی که مفسر پرل را پیچیده می‌کنند، طرفداری می‌کند. [74]

نحو پرل منعکس کننده این ایده است که "چیزهایی که متفاوت هستند باید متفاوت به نظر برسند." [75] برای مثال، اسکالرها، آرایه‌ها و هش‌ها نشانه‌های اصلی متفاوتی دارند. شاخص های آرایه و کلیدهای هش از انواع مختلفی از بریس ها استفاده می کنند. رشته ها و عبارات منظم دارای جداکننده های استاندارد متفاوتی هستند. این رویکرد را می توان با زبانی مانند Lisp مقایسه کرد ، که در آن از همان نحو اولیه، که از عبارات نمادین ساده و جهانی تشکیل شده است، برای همه اهداف استفاده می شود. [ نیازمند منبع ]

پرل هیچ پارادایم برنامه نویسی خاصی را اعمال نمی کند ( رویه ای ، شی گرا ، عملکردی یا موارد دیگر) یا حتی از برنامه نویس نمی خواهد که از بین آنها انتخاب کند. [ نیازمند منبع ]

هم برای زبان پرل و هم برای جامعه و فرهنگی که آن را احاطه کرده اند، یک گرایش عملی گسترده وجود دارد. مقدمه برنامه نویسی پرل اینگونه آغاز می شود: "Perl زبانی است برای انجام کار شما." [15] یکی از پیامدهای این امر این است که Perl زبان مرتبی نیست. این شامل بسیاری از ویژگی‌ها است، استثناهایی را برای قوانین خود تحمل می‌کند، و از روش‌های اکتشافی برای حل ابهامات نحوی استفاده می‌کند. به دلیل ماهیت بخشنده کامپایلر، گاهی اوقات می توان باگ ها را به سختی پیدا کرد. مستندات تابع پرل با گفتن این جمله که "به طور کلی، آنها کاری را که شما می خواهید انجام می دهند، مگر اینکه شما یکپارچگی بخواهید"، به رفتار متفاوت توابع داخلی در فهرست و زمینه های اسکالر اشاره می کند. [76]

هیچ مشخصات یا استاندارد نوشته شده ای برای زبان پرل برای نسخه های پرل از طریق پرل 5 وجود ندارد و هیچ برنامه ای برای ایجاد آن برای نسخه فعلی پرل وجود ندارد. تنها یک پیاده سازی از مفسر وجود داشته است و زبان نیز همراه با آن تکامل یافته است. آن مفسر، همراه با تست‌های عملکردی آن، به‌عنوان یک ویژگی واقعی زبان است. پرل 6، با این حال، با یک مشخصات شروع شد، [77] و چندین پروژه [78] با هدف پیاده سازی برخی یا تمام مشخصات انجام شد. [ نیازمند منبع ]

برنامه های کاربردی

Perl برنامه های کاربردی بسیار و متنوعی دارد که با در دسترس بودن بسیاری از ماژول های استاندارد و شخص ثالث ترکیب شده است.

Perl عمدتاً برای نوشتن اسکریپت‌های CGI استفاده می‌شود: پروژه‌های بزرگ نوشته شده در Perl شامل cPanel ، Slash ، Bugzilla ، RT ، TWiki و Movable Type می‌شوند . وب سایت های پربازدید که به طور گسترده از پرل استفاده می کنند عبارتند از Priceline.com ، Craigslist ، [79] IMDb ، [80] LiveJournal ، DuckDuckGo ، [81] [82] Slashdot و Ticketmaster . همچنین یک جزء اختیاری از پشته فناوری محبوب LAMP برای توسعه وب است، به جای PHP یا Python . Perl به طور گسترده به عنوان یک زبان برنامه نویسی سیستم در توزیع لینوکس دبیان استفاده می شود. [83]

Perl اغلب به عنوان یک زبان چسب استفاده می‌شود ، سیستم‌ها و رابط‌هایی را که به‌طور خاص برای همکاری با یکدیگر طراحی نشده‌اند، و برای " منگری داده[84] یعنی تبدیل یا پردازش مقادیر زیادی از داده‌ها برای کارهایی مانند ایجاد گزارش استفاده می‌شود. در واقع، این نقاط قوت ارتباط نزدیکی با هم دارند. این ترکیب، Perl را به یک زبان همه منظوره محبوب برای مدیران سیستم تبدیل می‌کند ، به‌ویژه به این دلیل که برنامه‌های کوتاه که اغلب « برنامه‌های تک خطی » نامیده می‌شوند را می‌توان در یک خط فرمان وارد کرد و اجرا کرد . [ نیازمند منبع ]

کد پرل را می توان در ویندوز و یونیکس قابل حمل ساخت . چنین کدی اغلب توسط تامین کنندگان نرم افزار (هم COTS و هم سفارشی) برای ساده سازی بسته بندی و نگهداری اسکریپت های ساخت و استقرار نرم افزار استفاده می شود. [ نیازمند منبع ]

Perl/Tk و wxPerl معمولا برای افزودن رابط کاربری گرافیکی به اسکریپت های Perl استفاده می شوند.

پیاده سازی

Perl به عنوان یک مفسر اصلی، که به زبان C نوشته شده است، همراه با مجموعه بزرگی از ماژول ها، که به زبان های Perl و C نوشته شده اند، پیاده سازی شده است. از سال 2010 ، مفسر دارای 150000 خط کد C است و به یک فایل اجرایی 1 مگابایتی در معماری های ماشین معمولی کامپایل می شود. متناوبا، مفسر را می توان در یک کتابخانه پیوند کامپایل کرد و در برنامه های دیگر جاسازی کرد. نزدیک به 500 ماژول در توزیع وجود دارد که شامل 200000 خط Perl و 350000 خط دیگر کد C است (بسیاری از کد C در ماژول ها شامل جداول رمزگذاری کاراکتر است ). [ نیازمند منبع ]

مفسر دارای معماری شی گرا است. تمام عناصر زبان پرل - اسکالرها، آرایه‌ها، هش‌ها، کدرف‌ها، دسته‌های فایل - در مفسر با ساختارهای C نشان داده می‌شوند . عملیات روی این ساختارها توسط مجموعه بزرگی از ماکروها ، تایپ‌دف‌ها و توابع تعریف می‌شوند. اینها API Perl C را تشکیل می دهند . Perl API می‌تواند برای افراد ناآشنا گیج‌کننده باشد، اما نقاط ورودی آن از یک طرح نام‌گذاری ثابت پیروی می‌کنند که راهنمایی‌هایی را برای کسانی که از آن استفاده می‌کنند ارائه می‌کند. [ نیازمند منبع ]

عمر مفسر پرل به طور کلی به فاز کامپایل و مرحله اجرا تقسیم می شود. [85] در پرل، مراحل ، مراحل اصلی در چرخه زندگی مترجم هستند. هر مفسر فقط یک بار از هر مرحله عبور می کند و مراحل در یک توالی ثابت دنبال می شوند. [ نیازمند منبع ]

بیشتر آنچه در مرحله کامپایل پرل اتفاق می افتد، کامپایل است، و بیشتر اتفاقاتی که در مرحله اجرا پرل می افتد، اجرا است، اما استثناهای قابل توجهی وجود دارد. پرل از قابلیت خود برای اجرای کد پرل در مرحله کامپایل استفاده مهمی می کند. پرل همچنین کامپایل را در مرحله اجرا به تاخیر می اندازد. عباراتی که نشان دهنده نوع پردازشی است که در هر لحظه در حال وقوع است عبارتند از زمان کامپایل و زمان اجرا . Perl در بیشتر نقاط در مرحله کامپایل در زمان کامپایل است، اما زمان کامپایل ممکن است در مرحله اجرا نیز وارد شود. زمان کامپایل برای کد در یک آرگومان رشته ای که به داخلی منتقل evalمی شود در مرحله اجرا رخ می دهد. پرل اغلب در مرحله کامپایل در زمان اجرا است و بیشتر فاز اجرا را در زمان اجرا می گذراند. کد درBEGIN بلوک ها در زمان اجرا اما در مرحله کامپایل اجرا می شوند.

در زمان کامپایل، مفسر کد Perl را به یک درخت نحو تجزیه می کند . در زمان اجرا، برنامه را با راه رفتن درخت اجرا می کند . متن تنها یک بار تجزیه می شود و درخت نحو قبل از اجرا در معرض بهینه سازی قرار می گیرد، به طوری که اجرا نسبتا کارآمد است. بهینه‌سازی‌های زمان کامپایل در درخت نحو شامل تاشوی ثابت و انتشار متن است، اما بهینه‌سازی چشمی نیز انجام می‌شود. [ نیازمند منبع ]

Perl دارای گرامر کامل تورینگ است زیرا تجزیه می تواند تحت تأثیر کد زمان اجرا اجرا شده در مرحله کامپایل قرار گیرد. [86] بنابراین، Perl را نمی توان با یک ترکیب مستقیم Lex / Yacc lexer / parser تجزیه کرد . در عوض، مفسر lexer خود را پیاده‌سازی می‌کند که با تجزیه‌کننده گاومیش کوهان دار اصلاح‌شده GNU هماهنگ می‌شود تا ابهامات زبان را حل کند. [ نیازمند منبع ]

اغلب گفته می شود که "فقط پرل می تواند پرل را تجزیه کند" [87] به این معنی که فقط مفسر پرل ( perl) می تواند زبان پرل ( پرل ) را تجزیه کند ، اما حتی این نیز به طور کلی درست نیست. از آنجایی که مفسر پرل می‌تواند ماشین تورینگ را در مرحله کامپایل شبیه‌سازی کند، برای تکمیل تجزیه در هر مورد باید مشکل توقف را حل کند. این یک نتیجه دیرینه است که مشکل توقف غیرقابل تصمیم گیری است، و بنابراین حتی پرل نیز همیشه نمی تواند پرل را تجزیه کند. پرل انتخاب غیرمعمولی را انجام می دهد که به کاربر در فاز کامپایل خود دسترسی به قدرت برنامه نویسی کامل خود را می دهد. هزینه از نظر خلوص نظری بالا است، اما به نظر می رسد ناراحتی عملی نادر است. [ نیازمند منبع ]

برنامه های دیگری که تجزیه پرل را بر عهده دارند، مانند تحلیلگرهای کد منبع و فرورفتگی خودکار ، نه تنها باید با ساختارهای نحوی مبهم بلکه با غیرقابل تصمیم گیری تجزیه پرل در حالت کلی مقابله کنند . پروژه PPI آدام کندی بر تجزیه کد پرل به عنوان یک سند (حفظ یکپارچگی آن به عنوان یک سند)، به جای تجزیه پرل به عنوان کد اجرایی (که حتی خود پرل همیشه نمی تواند انجام دهد) متمرکز شد. این کندی بود که برای اولین بار حدس زد که "تجزیه پرل از "مشکل توقف" رنج می برد، [88] که بعداً ثابت شد. [89]

Perl با بیش از 250000 تست کاربردی برای زبان اصلی Perl و بیش از 250000 تست کاربردی برای ماژول های اصلی توزیع شده است. اینها به عنوان بخشی از فرآیند ساخت عادی اجرا می شوند و مفسر و ماژول های اصلی آن را به طور گسترده اعمال می کنند. توسعه دهندگان Perl برای اطمینان از اینکه تغییرات در مفسر باعث ایجاد اشکالات نرم افزاری نمی شود، بر تست های عملکردی تکیه می کنند . علاوه بر این، کاربران پرل که مشاهده می‌کنند که مفسر آزمایش‌های عملکردی خود را بر روی سیستم خود انجام می‌دهد، می‌توانند از عملکرد صحیح آن اطمینان بالایی داشته باشند. [ نیازمند منبع ]

در دسترس بودن

Perl دارای مجوز دوگانه تحت مجوز هنری 1.0 [5] [6] و مجوز عمومی عمومی گنو است . [7] توزیع ها برای اکثر سیستم عامل ها در دسترس هستند . به ویژه در سیستم‌های یونیکس و یونیکس‌مانند رایج است ، اما به اکثر پلتفرم‌های مدرن (و بسیاری از منسوخ‌شده‌ها) منتقل شده است. تنها با شش استثنا گزارش شده [ نیازمند منبع ] ، Perl را می توان از کد منبع در همه پلتفرم های سازگار با POSIX یا در غیر این صورت با یونیکس کامپایل کرد . [90]

به دلیل تغییرات غیرعادی مورد نیاز برای محیط کلاسیک سیستم عامل مک ، یک پورت ویژه به نام MacPerl به طور مستقل ارسال شد. [91]

شبکه جامع بایگانی پرل فهرست کاملی از پلتفرم‌های پشتیبانی شده را با پیوندهایی به توزیع‌های موجود در هر کدام ارائه می‌کند. [92] CPAN همچنین منبع ماژول های پرل در دسترس عموم است که بخشی از توزیع هسته پرل نیستند. [ نیازمند منبع ]

ویندوز

کاربران مایکروسافت ویندوز معمولاً یکی از توزیع‌های باینری بومی Perl را برای Win32 نصب می‌کنند که معمولاً Strawberry Perl یا ActivePerl است . کامپایل Perl از کد منبع تحت ویندوز امکان پذیر است، اما اکثر نصب ها فاقد کامپایلر C و ابزارهای ساخت مورد نیاز هستند. این همچنین نصب ماژول ها از CPAN را دشوار می کند، به ویژه آنهایی که تا حدی به زبان C نوشته شده اند. [ نیازمند منبع ]

ActivePerl یک توزیع منبع بسته از ActiveState است که دارای نسخه های منظمی است که نسخه های اصلی Perl را دنبال می کند. [93] توزیع قبلاً شامل مدیریت بسته پرل (PPM) بود، [94] ابزاری محبوب برای نصب، حذف، ارتقاء و مدیریت استفاده از ماژول‌های رایج پرل. با این حال، این ابزار از ActivePerl 5.28 متوقف شد. [95] همچنین PerlScript ، یک موتور میزبان اسکریپت ویندوز (WSH) است که زبان Perl را پیاده‌سازی می‌کند. Visual Perl یک ابزار ActiveState است که Perl را به مجموعه توسعه Visual Studio .NET اضافه می کند. یک VBScriptمبدل -به-Perl و همچنین یک کامپایلر Perl برای ویندوز و مبدل های awk و sed به Perl نیز توسط این شرکت تولید شده و در سی دی ActiveState برای ویندوز قرار داده شده است که شامل تمامی توزیع های آنها به اضافه Komodo IDE و همه به جز اولین نسخه یونیکس/لینوکس/پوزیکس آن در سال 2002 و پس از آن. [96]

Strawberry Perl یک توزیع منبع باز برای ویندوز است. از ژانویه 2008 به طور منظم و سه ماهه منتشر شده است، از جمله ماژول های جدید به عنوان بازخورد و درخواست. هدف Strawberry Perl این است که بتواند ماژول هایی مانند توزیع های استاندارد Perl را بر روی پلتفرم های دیگر، از جمله کامپایل ماژول های XS، نصب کند. [ نیازمند منبع ]

از Cygwin لایه شبیه سازی یکی دیگر از راه در حال اجرا پرل تحت ویندوز است. Cygwin محیطی شبیه یونیکس را در ویندوز فراهم می کند و Perl و CPAN هر دو به عنوان بسته های استاندارد از پیش کامپایل شده در برنامه راه اندازی Cygwin در دسترس هستند. از آنجایی که Cygwin شامل gcc نیز می شود ، کامپایل Perl از منبع نیز امکان پذیر است. [ نیازمند منبع ]

یک فایل اجرایی perl در چندین کیت منبع ویندوز در فهرست با سایر ابزارهای اسکریپت گنجانده شده است. [ نیازمند منبع ]

پیاده‌سازی‌های Perl با ابزار MKS ، Interix (پایه اجرای قبلی سرویس‌های ویندوز برای یونیکس ) و UWIN ارائه می‌شوند . [ نیازمند منبع ]

رابط های پایگاه داده

از قابلیت‌های مدیریت متن پرل می‌توان برای ایجاد پرس‌و‌جوهای SQL استفاده کرد. آرایه ها، هش ها و مدیریت خودکار حافظه جمع آوری و پردازش داده های برگشتی را آسان می کند. به عنوان مثال، در رابط برنامه نویسی برنامه کاربردی Perl DBI تیم بانس (API)، آرگومان های API می توانند متن پرس و جوهای SQL باشند. بنابراین می توان همزمان به چندین زبان برنامه ریزی کرد (مثلاً برای ایجاد یک صفحه وب با استفاده از HTML ، جاوا اسکریپت و SQL در یک سند اینجا ). استفاده از درونیابی متغیر پرلسفارشی‌سازی برنامه‌نویسی هر یک از پرس‌و‌جوهای SQL، و مشخصات آرایه‌ها یا هش‌های Perl به‌عنوان ساختارهایی برای نگهداری برنامه‌نویسی مجموعه داده‌های حاصل از هر کوئری SQL، مکانیزم سطح بالایی را برای مدیریت مقادیر زیادی از داده‌ها برای پس‌پردازش توسط یک زیر برنامه پرل [97] در نسخه های اولیه Perl، رابط های پایگاه داده با پیوند مجدد مفسر با کتابخانه پایگاه داده سمت سرویس گیرنده ایجاد شدند . این کار به اندازه‌ای دشوار بود که فقط برای چند مورد از مهم‌ترین و پرکاربردترین پایگاه‌های داده انجام می‌شد، و perlفایل اجرایی حاصل را به استفاده از یک رابط پایگاه داده در یک زمان محدود می‌کرد. [98]

در Perl 5، رابط های پایگاه داده توسط ماژول های Perl DBI پیاده سازی می شوند. ماژول DBI (رابط پایگاه داده) یک رابط واحد و مستقل از پایگاه داده را برای برنامه های پرل ارائه می دهد، در حالی که ماژول های DBD (درایور پایگاه داده) جزئیات دسترسی به حدود 50 پایگاه داده مختلف را مدیریت می کنند. درایورهای DBD برای اکثر پایگاه های داده ANSI SQL وجود دارد . [99]

DBI ذخیره سازی برای دسته ها و پرس و جوهای پایگاه داده فراهم می کند، که می تواند عملکرد را در محیط های اجرایی طولانی مدت مانند mod perl [100] بهبود بخشد ، [100] به سیستم های با حجم بالا کمک می کند تا از جهش بار مانند افکت Slashdot جلوگیری کنند . [101]

در برنامه‌های مدرن پرل، به‌ویژه برنامه‌هایی که با استفاده از چارچوب‌های وب مانند Catalyst نوشته می‌شوند ، ماژول DBI اغلب به‌طور غیرمستقیم از طریق نقشه‌بردارهای شی-رابطه‌ای مانند DBIx::Class ، Class::DBI [102] یا Rose::DB::Object استفاده می‌شود . 103] که پرس و جوهای SQL را تولید می کند و داده ها را به صورت شفاف برای نویسنده برنامه مدیریت می کند. [104]

عملکرد مقایسه ای

بازی معیارهای زبان کامپیوتری عملکرد پیاده سازی مسائل برنامه نویسی معمولی را در چندین زبان برنامه نویسی مقایسه می کند. [105] پیاده‌سازی‌های ارسال‌شده پرل معمولاً در سطح بالایی از طیف استفاده از حافظه عمل می‌کنند و نتایج سرعت متفاوتی را ارائه می‌دهند. عملکرد پرل در بازی بنچمارک ها برای زبان های تفسیر شده معمولی است. [106]

برنامه های بزرگ پرل کندتر از برنامه های مشابه در زبان های کامپایل شده شروع می شوند زیرا perl باید هر بار که اجرا می شود منبع را کامپایل کند. در یک سخنرانی در کنفرانس YAPC::Europe 2005 و مقاله بعدی "یک شروع به موقع"، ژان لوئیس لروی دریافت که اجرای برنامه های پرل او بسیار بیشتر از حد انتظار طول می کشد زیرا مترجم پرل زمان قابل توجهی را صرف یافتن ماژول ها در محدوده بزرگ خود می کند. مسیر را شامل شود. [107] برخلاف جاوا، پایتون و روبی، پرل تنها پشتیبانی آزمایشی برای پیش کامپایل دارد. [108] بنابراین، برنامه های Perl این جریمه سربار را در هر اجرا پرداخت می کنند. مرحله اجرای برنامه های معمولی به اندازه کافی طولانی است که مستهلک می شودزمان راه‌اندازی قابل توجه نیست، اما معیارهایی که زمان اجرای بسیار کوتاه را اندازه‌گیری می‌کنند، احتمالاً به دلیل این سربار دچار انحراف می‌شوند. [109]

تعدادی ابزار برای بهبود این وضعیت معرفی شده است. اولین ابزاری از این دست، mod perl آپاچی بود که به دنبال رفع یکی از رایج‌ترین دلایلی بود که برنامه‌های کوچک پرل به سرعت مورد استفاده قرار می‌گرفتند: توسعه وب CGI . ActivePerl ، از طریق Microsoft ISAPI ، بهبود عملکرد مشابهی را ارائه می دهد. [110]

هنگامی که کد پرل کامپایل می شود، سربار اضافی در طول مرحله اجرا وجود دارد که معمولاً برای برنامه های نوشته شده به زبان های کامپایل شده مانند C یا C++ وجود ندارد. نمونه هایی از این سربار عبارتند از تفسیر بایت کد ، مدیریت حافظه شمارش مرجع و بررسی نوع پویا. [111]

بهینه سازی

مهم‌ترین روال‌ها را می‌توان به زبان‌های دیگر نوشت (مانند C )، که می‌توان آن‌ها را از طریق ماژول‌های ساده Inline یا مکانیزم پیچیده‌تر، اما انعطاف‌پذیرتر XS به Perl متصل کرد . [112]

پرل 5

Perl 5، زبانی که معمولاً به آن "Perl" گفته می شود، همچنان به طور فعال توسعه می یابد. Perl 5.12.0 در آوریل 2010 با برخی از ویژگی های جدید تحت تأثیر طراحی Perl 6 منتشر شد، [47] [113] و پس از آن Perl 5.14.1 (منتشر شده در 17 ژوئن 2011)، Perl 5.16.1 (منتشر شده در آگوست) 9، 2012. [114] ، و Perl 5.18.0 (منتشر شده در 18 مه 2013). نسخه های توسعه Perl 5 به صورت ماهانه منتشر می شوند و نسخه های اصلی هر سال یک بار منتشر می شوند. [115]

نسبت نسبی جستجوهای اینترنتی برای "برنامه نویسی Perl"، در مقایسه با جستجوهای مشابه برای سایر زبان های برنامه نویسی، به طور پیوسته از حدود 10٪ در سال 2005 به حدود 2٪ در سال 2011، به حدود 0.7٪ در سال 2020 کاهش یافت. [116]

راکو (پرل 6)

کاملیا ، لوگوی پروژه Perl 6 [117]

در کنفرانس پرل در سال 2000 ، جان اوروانت یک ابتکار زبان جدید را مطرح کرد. [118] این منجر به تصمیمی برای شروع کار بر روی طراحی مجدد زبان، به نام Perl 6 شد. پیشنهادهایی برای ویژگی های زبان جدید از جامعه Perl به طور گسترده درخواست شد، که بیش از 300 RFC ارسال کرد . [119]

وال چند سال بعد را صرف هضم RFCها و ترکیب آنها در چارچوبی منسجم برای Perl 6 کرد. او طرح خود را برای Perl 6 در یک سری اسناد به نام "آخرالزمان" ارائه کرد - شماره گذاری شده برای مطابقت با فصل های برنامه نویسی Perl . از ژانویه 2011 ، مشخصات در حال توسعه Perl 6 در اسناد طراحی به نام Synopses - شماره گذاری شده برای مطابقت با Apocalypses گنجانده شد. [120]

کار پایان نامه توسط بردلی ام. کوهن ، تحت نظارت وال، استفاده احتمالی از ماشین مجازی جاوا را به عنوان زمان اجرا برای Perl در نظر گرفت. [121] تز کوهن نشان داد که این رویکرد مشکل ساز است. در سال 2001، تصمیم گرفته شد که Perl 6 بر روی یک ماشین مجازی چند زبانه به نام Parrot اجرا شود . این بدان معناست که سایر زبان‌هایی که Parrot را هدف قرار می‌دهند، به CPAN دسترسی پیدا می‌کنند که امکان توسعه بین زبانی را فراهم می‌کند. [ نیازمند منبع ]

در سال 2005، آدری تانگ پروژه Pugs را ایجاد کرد که اجرای Perl 6 در Haskell بود . این به عنوان یک پلت فرم آزمایشی برای زبان Perl 6 عمل می‌کند و همچنان به کار خود ادامه می‌دهد (جدا از توسعه پیاده‌سازی واقعی) - به طراحان زبان اجازه می‌دهد کاوش کنند. پروژه Pugs یک جامعه بین زبانی فعال Perl/Haskell را ایجاد کرد که در اطراف کانال Libera Chat #raku IRC متمرکز بود. بسیاری از تأثیرات برنامه نویسی کاربردی توسط تیم طراحی Perl 6 جذب شد. [122]

در سال 2012، توسعه Perl 6 عمدتاً بر روی دو کامپایلر متمرکز بود: [123]

  1. Rakudo ، یک پیاده سازی که بر روی ماشین مجازی Parrot و ماشین مجازی جاوا اجرا می شود. [124]
  2. Niecza , که Common Language Runtime را هدف قرار می دهد .

در سال 2013، MoarVM ("Metamodel On A Runtime")، یک ماشین مجازی مبتنی بر زبان C که عمدتاً برای Rakudo طراحی شده بود، معرفی شد. [125]

در اکتبر 2019، Perl 6 به Raku تغییر نام داد. [126]

از سال 2017، تنها پیاده‌سازی Rakudo و MoarVM در حال توسعه فعال هستند و ماشین‌های مجازی دیگر، مانند ماشین مجازی جاوا و جاوا اسکریپت ، پشتیبانی می‌شوند. [127]

پرل 7

پرل 7 در تاریخ 24 ژوئن 2020 در "کنفرانس پرل در ابر" به عنوان جانشین پرل 5. اعلام شد [128] [129] بر اساس پرل 5.32، پرل 7 طراحی شده است که به عقب سازگار با مدرن پرل 5 کد؛ پرل 5 کد، بدون تکیهکلامهای (پراگما) هدر نیاز به اضافه کردن use compat::perl5;به سازگار باقی بماند، اما کد مدرن می تواند برخی از تکیهکلامهای رها کنید.

انجمن پرل

فرهنگ و جامعه پرل در کنار خود زبان توسعه یافته است. یوزنت اولین مکان عمومی بود که پرل در آن معرفی شد، اما در طول تکامل خود، جامعه پرل با رشد خدمات مبتنی بر اینترنت از جمله معرفی شبکه جهانی وب شکل گرفت. جامعه ای که پرل را احاطه کرده است، در واقع موضوع اولین سخنرانی وال با عنوان «وضعیت پیاز» بود. [130]

وضعیت پیاز

State of the Onion نام خلاصه‌های سالانه وال به سبک اصلی درباره پیشرفت پرل و جامعه آن است. آنها با شوخ طبعی مشخص او، به کار بردن ارجاعات به فرهنگ پرل، فرهنگ گسترده تر هکرها، پیشینه زبانی وال، گاهی اوقات زندگی خانوادگی او، و گاهی حتی پیشینه مسیحی او مشخص می شوند. [131]

هر سخنرانی ابتدا در کنفرانس های مختلف پرل ارائه می شود و در نهایت به صورت آنلاین نیز منتشر می شود.

سرگرمی های پرل

JAPHs
در پست‌های ایمیل، یوزنت و تابلوی پیام، برنامه‌های " فقط یک هکر دیگر پرل " (JAPH) یک روند رایج هستند که توسط راندال ال. شوارتز ، یکی از اولین مربیان حرفه‌ای پرل نشات گرفته‌اند . [132] در اصطلاح فرهنگ پرل، برنامه نویسان پرل به عنوان هکرهای پرل شناخته می شوند، و از همین امر تمرین نوشتن برنامه های کوتاه برای چاپ عبارت "فقط یک هکر دیگر پرل" ناشی می شود. در روح مفهوم اصلی، این برنامه ها به طور متوسط ​​مبهم هستند و به اندازه کافی کوتاه هستند که در امضای ایمیل یا پیام یوزنت جای می گیرند. JAPH "متعارف" که توسط شوارتز ایجاد شده است شامل کاما در انتها می شود، اگرچه این اغلب حذف می شود. [133]
گلف پرل
پرل "گلف" سرگرمی برای کاهش تعداد کاراکترها (کلید "سکته") استفاده شده در یک برنامه پرل به حداقل ممکن است، دقیقاً به همان روشی که بازیکنان گلف به دنبال گرفتن حداقل عکس در یک دور هستند. اولین استفاده این عبارت [134] بر تفاوت بین کد عابر پیاده که به معنای آموزش یک تازه وارد است و هک های مختصر که احتمالاً برنامه نویسان باتجربه Perl را سرگرم می کند، تأکید می کند ، نمونه ای از دومی JAPH هایی است که قبلاً در امضاها در پست های Usenet و جاهای دیگر استفاده می شد. بدلکاری های مشابه در دهه های گذشته یک سرگرمی بی نام در زبان APL بود. استفاده از Perl برای نوشتن برنامه‌ای که رمزگذاری RSA را انجام می‌دهد، باعث علاقه گسترده و عملی به این سرگرمی شد. [135]در سال‌های بعد، اصطلاح « گلف رمزی » در زبان‌های دیگر برای سرگرمی به کار رفت. [136] یک آخرالزمان گلف پرل در کنفرانس 4.0 پرل در مونتری، کالیفرنیا در ژوئیه 2000 برگزار شد.
مبهم سازی
مانند C، مسابقات کد مبهم یک سرگرمی شناخته شده در اواخر دهه 1990 بود. پرل مسابقه مبهم رقابت های برگزار شده بود پرل مجله 1996-2000 که ساخته شده یک فضیلت قوس از انعطاف پذیری نحوی پرل است. جوایزی برای دسته‌هایی مانند «قوی‌ترین» - برنامه‌هایی که از فضا استفاده مؤثری می‌کنند - و «بهترین امضای چهار خطی» برای برنامه‌هایی که در چهار خط 76 کاراکتری به سبک بلوک امضای Usenet قرار می‌گیرند، اهدا شد . [137]
شعر
شعر پرل تمرین نوشتن اشعاری است که می تواند به عنوان کد قانونی پرل جمع آوری شود، به عنوان مثال قطعه معروف به پرل سیاه . شعر پرل با تعداد زیاد کلمات انگلیسی که در زبان پرل استفاده می شود ممکن می شود. اشعار جدید به طور مرتب به جامعه در PerlMonks ارسال می شود . [138]

پرل در IRC

تعدادی کانال IRC وجود دارد که از زبان و برخی ماژول ها پشتیبانی می کنند.

شبکه IRC کانال ها
irc.libera.chat #پرل #راکو
irc.perl.org #moose #poe #catalyst #dbix-class #perl-help #distzilla #epo #corehackers #sdl #win32 #toolchain #padre #dancer
irc.slashnet.org #perlmonks
irc.oftc.net #perl #debian-perl (بسته بندی ماژول های پرل برای دبیان)
irc.efnet.net #کمک
irc.rizon.net #پرل

CPAN Acme

همچنین نمونه های زیادی از کدهایی که صرفاً برای سرگرمی نوشته شده اند در CPAN وجود دارد . Lingua::Romana::Perligataبه عنوان مثال، به نوشتن برنامه ها به زبان لاتین اجازه می دهد . [139] پس از اجرای چنین برنامه ای، ماژول کد منبع خود را به پرل معمولی ترجمه کرده و آن را اجرا می کند. [ نیازمند منبع ]

جامعه پرل فضای نام " Acme " را برای ماژول هایی که طبیعت سرگرم کننده دارند کنار گذاشته است (اما دامنه آن گسترش یافته و شامل کدهای اکتشافی یا آزمایشی یا هر ماژول دیگری است که هرگز در تولید استفاده نمی شود). برخی از ماژول های Acme عمدا به روش های سرگرم کننده پیاده سازی می شوند. این شامل Acme::Bleachیکی از اولین ماژول ها در Acme::فضای نام است، [140] که اجازه می دهد کد منبع برنامه "سفید" شود (یعنی همه کاراکترها با فضای خالی جایگزین شوند) و در عین حال کار کنند. [ نیازمند منبع ]

کد نمونه

در نسخه های قدیمی پرل، برنامه Hello World را به صورت زیر می نویسید :

چاپ  "سلام، جهان!\n" ;

در اینجا یک برنامه پیچیده تر Perl وجود دارد که از یک مقدار شروع معین، ثانیه شماری می کند:

#!/usr/bin/perl 
استفاده از  strict ; 
استفاده از  هشدارها ؛

my  (  $remaining ,  $total  );

$ باقی مانده  =  $ total  =  shift ( @ARGV );

STDOUT -> autoflush ( 1 );

while  (  $remaining  )  { 
    printf  (  "Remaining %s/%s \r" ,  $remaining -- ,  $total  ); 
    خواب  1 ; 
}

چاپ  "\n" ;

مفسر perl همچنین می تواند برای اسکریپت های یکباره در خط فرمان استفاده شود. مثال زیر (همانطور که از یک پوسته سازگار با sh، مانند Bash فراخوانی شده است) رشته "Bob" را در همه فایل هایی که با txt. در فهرست فعلی ختم می شوند به "Robert" ترجمه می کند:

$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt

انتقاد

پرل توسط منتقدانش به عنوان " صدای خط " و زبانی فقط نوشتنی شناخته شده است. اولین مورد ذکر شده در اولین ویرایش کتاب Learning Perl ، کتاب آموزشی Perl 4 نوشته شده توسط Randal L. Schwartz ، [141] بود که در فصل اول آن بیان می کند: "بله، گاهی اوقات پرل مانند نویز خط به نظر می رسد. ناآشنا، اما برای برنامه نویس باتجربه پرل، به نظر می رسد نویز خط چک جمع شده با یک ماموریت در زندگی است." [142] او همچنین اظهار داشت که می‌توان از این اتهام که Perl یک زبان فقط نوشتنی است، با کدنویسی با «مراقبت مناسب» اجتناب کرد. [142] سند نمای کلی Perl perlintro بیان می کند که نام "جادو" داخلیاسکالرمتغیرها "شبیه نقطه گذاری یا نویز خط هستند". [143] با این حال، ماژول انگلیسی جایگزین های طولانی و کوتاه انگلیسی را ارائه می دهد. سند perlstyle بیان می کند که نویز خط در عبارات منظم را می توان با استفاده از /xاصلاح کننده برای افزودن فضای خالی کاهش داد. [144]

طبق پرسش‌های متداول Perl 6 ، Perl 6 برای کاهش "مظنونین معمولی" طراحی شده است که ادعای "صدای خط" را از منتقدان Perl 5، از جمله حذف "اکثر متغیرهای نقطه‌گذاری" و پاکسازی نحو regex ایجاد می‌کنند. . [145] پرل 6 پرسش و پاسخ نیز میگوید که چه گاهی اوقات به عنوان خط پرل سر و صدا "نحو واقعی زبان" فقط عنوان gerunds و حروف اضافه هستند بخشی از زبان انگلیسی . [145] در یک پست وبلاگ در دسامبر 2012، علیرغم این ادعا که "راکودو پرل 6 شکست خورده است و به شکست ادامه خواهد داد مگر اینکه نظارت بزرگسالان را دریافت کند"، رنگیبیان کرد که طراحی Perl 6 دارای یک "گرامر کاملاً تعریف شده" و همچنین "سیستم نوع بهبود یافته، یک سیستم شی یکپارچه با متامدل هوشمند، متاعملگرها، و یک سیستم واضح تر از زمینه است که موارد زیبایی مانند تنبلی فراگیر را فراهم می کند." . [146] او همچنین اظهار داشت که "پرل 6 دارای یک انسجام و سازگاری است که پرل 5 فاقد آن است." [146]

همچنین ببینید

منابع

  1. ^ a b "v13i001: Perl، یک "جایگزین" برای awk و sed، Part01/10" . بایگانی comp.sources.unix . بازبینی شده در 11 اوت 2021 .
  2. ^ "Perl 5.34.0 اکنون در دسترس است!" . www.nntp.perl.org . بازبینی شده در 21 مه 2021 .
  3. ^ "Perl 5.32.1 اکنون در دسترس است!" . www.nntp.perl.org. بایگانی شده از نسخه اصلی در ۲۴ ژانویه ۲۰۲۱ . بازبینی شده در 24 ژانویه 2021 .
  4. "Perl 5.35.5 اکنون در دسترس است!" . www.nntp.perl.org . بازبینی شده در 23 اکتبر 2021 .
  5. ^ a b "مجوز هنری" - dev.perl.org" . dev.perl.org . بایگانی شده از نسخه اصلی در ۲۴ ژوئیه ۲۰۱۸ . بازبینی شده در 24 ژوئن 2016 .
  6. a b هنری بایگانی شده در ۲۵ ژوئیه ۲۰۱۸، در ماشین Wayback - فایل در مخزن پرل 5 git
  7. ^ a b "مجوز Perl" . dev.perl.org. بایگانی شده از نسخه اصلی در 22 ژانویه 2011 . بازیابی شده در 8 ژانویه 2011 .
  8. لری وال (12 دسامبر 2007). "برنامه نویسی سخت است، بیایید به اسکریپت بپردازیم..." بایگانی شده از نسخه اصلی در 28 ژوئیه 2017 . بازبینی شده در 14 آوریل 2019 . همه طراحان زبان گهگاه ویژگی های خاص خود را دارند. من فقط در آن بهتر از بسیاری هستم.
  9. «درباره پرل» . perl.org. بایگانی شده از نسخه اصلی در 6 نوامبر 2015 . بازبینی شده در 20 آوریل 2013 . "Perl" یک خانواده از زبان ها است، "Perl 6" بخشی از خانواده است، اما یک زبان جداگانه است که تیم توسعه خود را دارد. وجود آن تاثیر قابل توجهی در ادامه توسعه "Perl 5" ندارد.
  10. «مسیر راکو» . GitHub. بایگانی‌شده از نسخه اصلی در ۱۲ نوامبر ۲۰۲۰ . بازبینی شده در 14 ژانویه 2021 . این سند مراحلی را که باید برای تغییر نام Perl 6 به Raku انجام شود، شرح می دهد
  11. ^ لاپوورث، لئو. "سوالات عمومی در مورد پرل" . پرل پرسش و پاسخ . Perl.org. بایگانی شده از نسخه اصلی در 22 ژوئن 2013 . بازبینی شده در 24 فوریه 2012 .
  12. ^ "perl(1): زبان استخراج/گزارش عملی - صفحه مرد لینوکس" . Linux.die.net. بایگانی شده از نسخه اصلی در 22 ژوئن 2013 . بازبینی شده در 23 جولای 2013 .
  13. شپرد، داگ (16 اکتبر 2000). "معرفی مبتدیان به پرل" . dev.perl.org. بایگانی شده از نسخه اصلی در 5 ژوئن 2011 . بازیابی شده در 8 ژانویه 2011 .
  14. اشتون، الین (1999). "The Timeline of Perl and its Culture (v3.0_0505)" . بایگانی شده از نسخه اصلی در 11 ژانویه 2013 . بازیابی شده در 12 مارس 2004 .
  15. ^ a b c d Wall, Larry ; کریستینسن، تام؛ اوروانت، جان (ژوئیه 2000). برنامه نویسی پرل، ویرایش سوم . OReilly برای رسانه ها . شابک 978-0-596-00027-1.
  16. «ارزیابی زبان» . بایگانی شده از نسخه اصلی در 10 مارس 2015 . بازبینی شده در 30 ژانویه 2015 . نقطه قوت پرل امکانات داخلی بسیار قدرتمند آن برای پردازش الگوی قالب های داده متنی و خط گرا است. در این بی نظیر است.
  17. «شما از پرل برای نوشتن چه چیزی استفاده کردید؟!» . 24 ژانویه 2008. بایگانی شده از نسخه اصلی در 4 فوریه 2015 . بازبینی شده در 4 فوریه 2015 . perl همیشه زبان مورد استفاده برای هر کاری بوده است که شامل ورودی تطبیق الگو باشد
  18. «اهمیت پرل» . بایگانی شده از نسخه اصلی در 2 فوریه 2015 . بازبینی شده در 4 فوریه 2015 . توانایی بی نظیر پرل در پردازش متن ...
  19. اسمیت، رودریک دبلیو (21 ژوئن 2002). لینوکس شبکه و جوی پیشرفته . ادیسون وسلی حرفه ای. پ. 594 . شابک 978-0-201-77423-8.
  20. شپرد، داگ (16 اکتبر 2000). "معرفی مبتدیان به پرل" . OReilly برای رسانه ها . بایگانی شده از نسخه اصلی در 4 ژوئن 2008 . بازیابی شده در 27 جولای 2008 .
  21. ریموند، اریک (23 دسامبر 2003). "اره برقی ارتش سوئیس" . فایل ژارگون . بایگانی شده از نسخه اصلی در 14 آگوست 2018 . بازبینی شده در 29 نوامبر 2014 .
  22. ^ لئونارد، اندرو. "شادی پرل" . Salon.com . بایگانی شده از نسخه اصلی در 6 ژوئیه 2012 . بازبینی شده در 5 ژوئن 2012 .
  23. «نحوه اندازه‌گیری برنامه‌ها | بازی معیارهای زبان رایانه» . معیارهای بازی-team.pages.debian.net . بایگانی‌شده از نسخه اصلی در ۱۲ ژوئیه ۲۰۲۰ . بازبینی شده در 5 اکتبر 2020 .
  24. "RSA در 3 خط پرل - Everything2.com" . everything2.com . بایگانی‌شده از نسخه اصلی در ۸ اکتبر ۲۰۲۰ . بازبینی شده در 5 اکتبر 2020 .
  25. ریچاردسون، مارجوری (1 مه 1999). "لری وال، گورو پرل" . مجله لینوکس . بایگانی شده از نسخه اصلی در 22 ژوئن 2013 . بازیابی شده در 3 ژانویه 2011 .
  26. ^ "perlfaq1: تفاوت بین "perl" و "Perl" چیست؟" . perldoc.perl.org - مستندات Perl 5 نسخه 12.2 . بایگانی شده از نسخه اصلی در 12 مه 2013 . بازیابی شده در 4 ژوئن 2007 .
  27. ^ شوارتز، راندال ؛ فوی، برایان ؛ فینیکس، تام (16 ژوئن 2011). آموزش پرل . O'Reilly Media, Inc. p. 4 . شابک 978-1449313142. Perl گاهی اوقات "زبان استخراج و گزارش عملی" نامیده می شود، اگرچه در میان دیگر توسعه ها، آن را "فهرست زباله التقاطی آسیب شناسی" نیز می نامند. این در واقع یک نام مخفف است، نه مخفف، زیرا لری وال، خالق پرل، ابتدا نام و بعداً گسترش یافت. به همین دلیل است که «پرل» در همه حروف نیست. بحث در مورد صحیح بودن بسط هیچ فایده ای ندارد: لری هر دو را تأیید می کند.
  28. ^ وال، لری . "perl - مترجم زبان پرل" . اسناد پرل 5 نسخه 12.2 . بایگانی شده از نسخه اصلی در 22 ژوئن 2013 . بازیابی شده در 26 ژانویه 2011 .
  29. "perl.perl5.porters archive" . perl.org. بایگانی شده از نسخه اصلی در 1 می 2011 . بازیابی شده در 13 ژانویه 2011 .
  30. ^ "perlhist - سوابق تاریخ پرل" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 13 ژانویه 2011 . بازیابی شده در 21 ژانویه 2011 .
  31. ^ "CPAN" . CPAN . بایگانی شده از نسخه اصلی در 3 اکتبر 2019 . بازبینی شده در 8 مه 2017 .
  32. ^ a b "perl5004delta — چیزهای جدید برای perl5.004" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 27 فوریه 2011 . بازیابی شده در 8 ژانویه 2011 .
  33. ^ پاتواردان، ناتان؛ سیور، الن؛ اسپین هور، استفان (2002). پرل به طور خلاصه، ویرایش دوم . OReilly برای رسانه ها . شابک 978-0-596-00241-1.
  34. "perl5005delta - چیزهای جدید برای perl5.005" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 3 فوریه 2011 . بازیابی شده در 21 ژانویه 2011 .
  35. ^ "perlhist - سوابق تاریخ پرل" . www.cpan.org. بایگانی‌شده از نسخه اصلی در ۱۶ سپتامبر ۲۰۲۰ . بازیابی شده در 2 ژوئن 2020 .
  36. "Perl Source" . www.cpan.org. بایگانی شده از نسخه اصلی در ۱ ژوئن ۲۰۱۷ . بازیابی شده در 2 ژوئن 2020 .
  37. "perl56delta - چه جدید برای perl v5.6.0" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 2 فوریه 2011 . بازیابی شده در 21 ژانویه 2011 .
  38. "perl56delta - چیزهای جدید برای perl v5.6.x" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 18 نوامبر 2010 . بازیابی شده در 21 ژانویه 2011 .
  39. ^ وال، لری. "آخرالزمان 1: زشت، بد و خوب" . بایگانی شده از نسخه اصلی در 23 نوامبر 2010 . بازیابی شده در 8 ژانویه 2011 .
  40. "perl58delta - چه چیزی جدید برای perl v5.8.0" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 21 نوامبر 2010 . بازیابی شده در 21 ژانویه 2011 .
  41. «نقشه ای برای پاگ ها» . OReilly برای رسانه ها . 3 مارس 2005. بایگانی شده از نسخه اصلی در 8 سپتامبر 2012 . بازیابی شده در 27 ژانویه 2011 .
  42. تانگ، آدری (21 آوریل 2010). "Re: نحوه پیاده سازی Perl 6 در ده سال" . PerlMonks . بایگانی شده از نسخه اصلی در 11 مه 2011 . بازیابی شده در 3 ژانویه 2011 .
  43. جف برادول (۸ اوت ۲۰۰۵)، OSCON 4.4: داخل پونی، پل از پرل 5 تا پرل 6 ، وبلاگ O'Reilly ONLamp، بایگانی شده از نسخه اصلی در 14 مارس 2012 ، بازیابی شده در 27 ژوئن 2016
  44. جسی وینسنت (۲۳ اوت ۲۰۰۶)، پونی به چراگاه گذاشته شد ، بنیاد پرل، بایگانی شده از نسخه اصلی در ۲۷ ژوئن ۲۰۰۹ ، بازیابی شده در ۱۵ ژانویه ۲۰۱۹
  45. "perl5100delta - چیزهای جدید برای perl 5.10.0" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 21 دسامبر 2010 . بازیابی شده در 8 ژانویه 2011 .
  46. ^ "perlsyn - نحو پرل" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 26 اوت 2013 . بازیابی شده در 21 ژانویه 2011 .
  47. ^ a b "perl5120delta - آنچه جدید برای perl v5.12.0 است" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 4 ژانویه 2011 . بازیابی شده در 8 ژانویه 2011 .
  48. ^ "perldelta - چه چیزی جدید برای perl v5.12.3" است . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 8 ژوئن 2011 . بازیابی شده در 8 ژانویه 2011 .
  49. "perl5140delta - چیزهای جدید برای perl v5.14.0 - metacpan.org" . metacpan.org . بایگانی شده از نسخه اصلی در ۲۵ ژوئیه ۲۰۱۸ . بازبینی شده در ۲۲ ژوئیه ۲۰۱۷ .
  50. ^ a b "perldelta - آنچه برای perl v5.16.0 جدید است" . اسناد پرل 5 نسخه 16.0 . metacpan.org. بایگانی‌شده از نسخه اصلی در ۲۸ ژوئیه ۲۰۲۰ . بازبینی شده در 21 مه 2012 .
  51. "perl5180delta - چیزهای جدید برای perl v5.18.0 - زبان برنامه نویسی Perl" . اسناد پرل 5 نسخه 18.0 . metacpan.org. بایگانی شده از نسخه اصلی در 29 اکتبر 2013 . بازبینی شده در 27 اکتبر 2013 .
  52. "perl5200delta - چیزهای جدید برای perl v5.20.0 - زبان برنامه نویسی Perl" . اسناد پرل 5 نسخه 20.0 . metacpan.org. بایگانی شده از نسخه اصلی در 27 مه 2014 . بازبینی شده در 27 مه 2014 .
  53. نقاط عطف در رنسانس پرل - برنامه نویسی مدرن پرل بایگانی شده در 27 اکتبر 2012، در Wayback Machine . Modernperlbooks.com. بازبینی شده در 2013-07-17.
  54. پیشگفتار (مدرن پرل 2011-2012) بایگانی شده در 28 سپتامبر 2012، در Wayback Machine . Modernperlbooks.com. بازبینی شده در 2013-07-17.
  55. Modern Perl 2011-2012 edition توسط chromatic | عقیق سلیمانی نئون پرس آرشیو 2011 دسامبر 22، در پایگاه Wayback Machine . Onyxneon.com. بازبینی شده در 2013-07-17.
  56. «پرل روشنفکر» . پرل روشنفکر . بایگانی شده از نسخه اصلی در 5 فوریه 2014 . بازبینی شده در 28 سپتامبر 2012 .
  57. «YAPC::NA 2013 - 3-5 ژوئن، آستین، تگزاس» . Yapcna.org. 4 ژوئن 2013. بایگانی شده از نسخه اصلی در 22 ژوئن 2013 . بازیابی شده در 11 آوریل 2014 .
  58. لیتل، استوان (۸ فوریه ۲۰۱۳). "مو چیست (توضیح) | استوان لیتل" . Blogs.perl.org. بایگانی شده از نسخه اصلی در 19 دسامبر 2013 . بازیابی شده در 11 آوریل 2014 .
  59. ^ "p2 در معجون" . Perl11.org. 7 فوریه 2004. بایگانی شده از نسخه اصلی در 24 سپتامبر 2013 . بازیابی شده در 11 آوریل 2014 .
  60. «goccy/gperl 路 GitHub» . GitHub.com. بایگانی شده از نسخه اصلی در 23 فوریه 2015 . بازیابی شده در 11 آوریل 2014 .
  61. ^ "rperl" . RPerl.org. بایگانی شده از نسخه اصلی در 18 اکتبر 2014 . بازبینی شده در 11 اوت 2014 .
  62. «Perl 7 در کنفرانس Perl in the Cloud معرفی شد» . perlfoundation.org. 24 ژوئن 2020. بایگانی شده از نسخه اصلی در 26 ژوئن 2020 . بازبینی شده در 24 ژوئن 2020 .
  63. «اعلام پرل ۷» . perl.com 24 ژوئن 2020. بایگانی شده از نسخه اصلی در 24 ژوئن 2020 . بازبینی شده در 24 ژوئن 2020 .
  64. نیکلاس کلارک (9 مه 2021). "جلسه شورای راهبری شماره 019 2021-05-06" . www.nntp.perl.org . بایگانی‌شده از نسخه اصلی در ۱۸ مه ۲۰۲۱ . بازبینی شده در 17 مه 2021 . برنامه همچنان این است که پرل 7 بامپ خواهد بود، اما نه بلافاصله پس از انتشار 5.34.0. ... ما فکر نمی کنیم که بتوانیم در 12 ماه [پرل 7] را تحویل دهیم. 
  65. ^ آماده شدن برای Perl 7d . leanpub.com. 24 ژوئن 2020. بایگانی شده از نسخه اصلی در 25 ژوئن 2020 . بازبینی شده در 24 ژوئن 2020 .
  66. ^ a b شوارتز، راندال ال . فینیکس، تام؛ فوی، برایان (6 دسامبر 2007). آموزش پرل، ویرایش سوم . شابک 978-0-596-00132-2.
  67. ^ a b "اطلاعات استفاده و علامت تجاری Perl Camel" . OReilly برای رسانه ها . بایگانی شده از نسخه اصلی در ۲۵ آوریل ۲۰۱۸ . بازیابی شده در 9 ژانویه 2011 .
  68. «علامت تجاری پرل» . بنیاد پرل . بایگانی شده از نسخه اصلی در 3 می 2011 . بازیابی شده در 9 ژانویه 2011 .
  69. گیلمور، دان (۲۵ اکتبر ۱۹۹۸). "جمهوری پرل" . شیکاگو تریبون . بایگانی شده از نسخه اصلی در 30 آوریل 2011 . بازیابی شده در 10 ژانویه 2011 .
  70. ریدل، سباستین (18 ژانویه 2012). "پرل 5 رپتور" . سباستین ریدل . بایگانی شده از نسخه اصلی در 11 ژوئن 2018 . بازبینی شده در 12 نوامبر 2017 .
  71. تروت، مت (16 ژوئن 2005). "وضعیت Velociraptor - فاز دو" . Shadowcat سیستم های محدود . بایگانی شده از نسخه اصلی در 13 نوامبر 2017 . بازبینی شده در 12 نوامبر 2017 .
  72. ناگپال، DP (2010). فناوری طراحی وب سایت . هند: S. Chand. پ. 700. شابک 978-8121927635.
  73. «عنوان ناشناخته». 10 مه 1997. Usenet: [email protected] . [ لینک مرده ]
  74. ^ وال، لری. "perl - مترجم زبان Perl 5 - مرورگر Perldoc" . perldoc.perl.org . بازبینی شده در 24 ژوئن 2021 .
  75. وال، لری (1 مارس 1997). "تو چرا هستی؟" . مجله لینوکس . بایگانی شده از نسخه اصلی در 9 دسامبر 2010 . بازیابی شده در 13 مارس 2011 .
  76. ^ "perlfunc - توابع داخلی Perl" . اسناد پرل 5 نسخه 12.2 . perldoc.perl.org. بایگانی شده از نسخه اصلی در 6 ژانویه 2011 . بازیابی شده در 10 ژانویه 2011 .
  77. «مشخصات Perl 6» . پروژه پرل 6 بایگانی شده از نسخه اصلی در 2 دسامبر 2009 . بازیابی شده در 27 ژانویه 2011 .
  78. «کامپایلرهای Perl 6» . پروژه پرل 6 بایگانی شده از نسخه اصلی در 2 دسامبر 2009 . بازیابی شده در 27 ژانویه 2011 .
  79. ^ گیلمور، WJ (2010). شروع PHP و MySQL: از مبتدی تا حرفه ای، نسخه چهارم . Apress. پ. 484 . شابک 978-1-4302-3114-1.
  80. ^ "IMDb Helpdesk: از چه نرم افزار/سخت افزاری برای اجرای سایت استفاده می کنید؟" . بانک اطلاعات فیلم های اینترنتی . بایگانی شده از نسخه اصلی در 9 مارس 2017 . بازیابی شده در 12 فوریه 2011 .
  81. ^ DuckDuckGo تعداد زیادی درخواست جستجو را با 4.5 میلیون درخواست در روز انجام می دهد. https://duckduckgo.com/traffic.html آرشیو شده در 15 فوریه 2012، درآرشیو وب کتابخانه کنگره کنگره
  82. ^ DuckDuckGo از پرل استفاده می کند https://web.archive.org/web/20101231135106/http://www.gabrielweinberg.com/blog/2009/03/duck-duck-go-architecture.html
  83. «پرسش های متداول پرل» . بایگانی‌شده از نسخه اصلی در ۶ اوت ۲۰۱۹ . بازبینی شده در ۶ اوت ۲۰۱۹ . پرل در دبیان بسیار مورد استفاده قرار می گیرد. نه تنها برخی از توابع اصلی در Perl نوشته شده اند، بلکه بیش از 700 بسته در ناپایدار وجود دارد که perl به نام خود دارند (مارس 2004).
  84. «کتاب‌های پرل - کتاب: بررسی داده‌ها با پرل» . Perl.org . بایگانی شده از نسخه اصلی در 7 سپتامبر 2011 . بازیابی شده در 30 دسامبر 2010 .
  85. ^ شرحی از مفسر پرل 5 را می توان در برنامه نویسی پرل ، ویرایش سوم، فصل 18 یافت. به خصوص به صفحه 467 مراجعه کنید، که به دقت فاز اجرا و فاز کامپایل را از زمان اجرا و زمان کامپایل متمایز می کند. "زمان" و "فاز" پرل اغلب با هم اشتباه گرفته می شوند.
  86. ^ شوارتز، راندال . "در مورد تجزیه پرل" . بایگانی شده از نسخه اصلی در 27 سپتامبر 2007 . بازیابی شده در 3 ژانویه 2007 .
  87. "The Perl Journal #19/9.26" (PDF) . OReilly برای رسانه ها . بازیابی شده در 4 فوریه 2011 .
  88. ^ کندی، آدم (2006). "PPI—Perl، تجزیه و تحلیل و دستکاری پرل (بدون پرل)" . CPAN . بایگانی شده از نسخه اصلی در 3 سپتامبر 2013 . بازبینی شده در 16 سپتامبر 2013 .
  89. «قضیه رایس». بررسی پرل . 4 (3): 23-29. تابستان 2008.و "پرل غیرقابل تصمیم است". بررسی پرل . 5 : 7-11. پاییز 2008.، به صورت آنلاین در Kegler, Jeffrey در دسترس است. "پرل و تصمیم ناپذیری" . بایگانی شده از نسخه اصلی در 17 اوت 2009 . بازیابی شده در 4 ژانویه 2009 .
  90. ^ Hietaniemi, Jarkko (1998). "Perl Ports (Binary Distributions)". CPAN.org. Archived from the original on April 18, 2006. Retrieved April 16, 2006.
  91. ^ "The MacPerl Pages". Prime Time Freeware. 1997. Archived from the original on January 18, 2006. Retrieved January 18, 2006.
  92. ^ "Perl Ports (Binary Distributions)". CPAN. Archived from the original on April 18, 2006. Retrieved January 27, 2011.
  93. ^ "ActivePerl is Perl for Windows, Mac, Linux, AIX, HP-UX & Solaris". ActiveState Software. Archived from the original on March 31, 2016. Retrieved January 9, 2011.
  94. ^ "Using PPM". ActiveState Software. Archived from the original on August 27, 2010. Retrieved January 9, 2011.
  95. ^ "Goodbye PPM, Hello State Tool". activestate.com. July 23, 2019. Archived from the original on July 28, 2020. Retrieved April 16, 2020.
  96. ^ readme.txt
  97. ^ Descartes, Alligator; Bunce, Tim (2000). Programming the Perl DBI : [database programming with Perl] (1 ed.). Beijing [u.a.]: O'Reilly. ISBN 978-1-56592-699-8.
  98. ^ "Perl Programming - Principles of Programming Languages". sites.google.com. Retrieved May 18, 2021.
  99. ^ Bunce, Tim; Descartes, Alligator (February 4, 2000). Programming the Perl DBI: Database programming with Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-1536-8.
  100. ^ Bekman, Stas. "Efficient Work with Databases under mod_perl". Archived from the original on August 22, 2007. Retrieved September 1, 2007.
  101. ^ Pachev, Sasha (April 10, 2007). Understanding MySQL Internals: Discovering and Improving a Great Database. "O'Reilly Media, Inc.". ISBN 978-0-596-55280-0.
  102. ^ "Class::DBI - Simple Database Abstraction - metacpan.org". metacpan.org. Archived from the original on August 6, 2020. Retrieved April 8, 2020.
  103. ^ "Rose::DB::Object - Extensible, high performance object-relational mapper (ORM). - metacpan.org". metacpan.org. Archived from the original on August 6, 2020. Retrieved April 8, 2020.
  104. ^ "T sql querying developer reference". pdfpremiumfree.com. Retrieved May 18, 2021.
  105. ^ "Alioth: The Computer Language Benchmarks Game: Project Info". Alioth. Archived from the original on March 25, 2013. Retrieved January 13, 2011.
  106. ^ "Which programs are fastest?". Computer Language Benchmarks Game. Alioth. Archived from the original on May 17, 2013. Retrieved January 13, 2011.
  107. ^ Leroy, Jean-Louis (December 1, 2005). "A Timely Start". O'Reilly. Archived from the original on June 13, 2006. Retrieved May 22, 2006.
  108. ^ Beattie, Malcolm & Enache Adrian (2003). "B::Bytecode Perl compiler's bytecode backend". CPAN. Archived from the original on March 30, 2021. Retrieved September 16, 2013.
  109. ^ Schwartz, Randal; foy, brian; Phoenix, Tom (June 23, 2011). Learning Perl. "O'Reilly Media, Inc.". ISBN 978-1-4493-0358-7.
  110. ^ Stein, Lincoln; MacEachern, Doug (1999). Writing Apache Modules with Perl and C: The Apache API and Mod_perl. "O'Reilly Media, Inc.". ISBN 978-1-56592-567-0.
  111. ^ Bekman, Stas; Cholet, Eric (2003). Practical Mod_perl. "O'Reilly Media, Inc.". ISBN 978-0-596-00227-5.
  112. ^ Ingerson, Brian. "Inline - metacpan.org". CPAN. Archived from the original on June 13, 2013. Retrieved January 26, 2011.
  113. ^ "Perl 5.12.0 released - Update". Heise Media UK. April 13, 2010. Archived from the original on April 19, 2010. Retrieved January 8, 2011.
  114. ^ "perl 5.16.1 released!". August 9, 2012. Archived from the original on December 2, 2012. Retrieved August 26, 2012.
  115. ^ "The unstoppable Perl release train?". LWN.net. February 29, 2012. Archived from the original on August 22, 2016. Retrieved March 28, 2012.
  116. ^ TIOBE Software Index (2020). "TIOBE Programming Community Index Perl". Archived from the original on February 25, 2018. Retrieved February 6, 2020.
  117. ^ "Perl 6". The Perl 6 Project. Archived from the original on February 21, 2011. Retrieved February 27, 2011.
  118. ^ Torkington, Nathan. "Transcription of Larry's talk". nntp.perl.org. Archived from the original on May 1, 2011. Retrieved January 25, 2011.
  119. ^ "Perl6 - The future of Perl". www.java-samples.com. Retrieved May 18, 2021.
  120. ^ "Official Perl 6 Documentation". The Perl 6 Project. Archived from the original on August 31, 2009. Retrieved January 25, 2011.
  121. ^ Kuhn, Bradley (January 2001). "Considerations on Porting Perl to the Java Virtual Machine". University of Cincinnati. Archived from the original on March 21, 2008. Retrieved June 28, 2008. Cite journal requires |journal= (help)
  122. ^ Chromatic (2015). Modern Perl. Pragmatic Bookshelf. ISBN 978-1-68050-088-2.
  123. ^ "Feature comparison of Perl 6 compilers". Archived from the original on August 11, 2017. Retrieved March 28, 2012.
  124. ^ Worthington, Jonathan (July 15, 2013). "Rakudo JVM News: More tests, plus Thread and Promise prototypes". 6guts. Archived from the original on October 5, 2013. Retrieved July 24, 2013.
  125. ^ Worthington, Jonathan (May 31, 2013). "MoarVM: A virtual machine for NQP and Rakudo". 6guts. Archived from the original on July 9, 2013. Retrieved July 24, 2013.
  126. ^ "rename-lwn". Archived from the original on October 17, 2019. Retrieved November 10, 2019.
  127. ^ "rakudo/rakudo - GitHub". GitHub.com. Archived from the original on July 29, 2017. Retrieved September 21, 2013.
  128. ^ "Announcing Perl 7". perl.com. June 24, 2020. Archived from the original on June 24, 2020. Retrieved June 24, 2020.
  129. ^ "Perl 7 announced at Perl Conference in the Cloud". perlfoundation.org. June 24, 2020. Archived from the original on June 26, 2020. Retrieved June 24, 2020.
  130. ^ Wall, Larry (May 22, 2014). "Perl Culture (AKA the first State of the Onion)". Archived from the original on May 22, 2014. Retrieved May 22, 2014.
  131. ^ Larry Wall. "2nd State of the Onion". Archived from the original on July 17, 2012. Retrieved October 12, 2012. (Search for 'church')
  132. ^ Randal L. Schwartz (May 2, 1999). "Who is Just another Perl hacker?". Newsgroupcomp.lang.perl.misc. Usenet: [email protected]. Archived from the original on July 8, 2012. Retrieved December 5, 2014.
  133. ^ Schwartz, Randal (March 31, 2005). "Canonical JAPH". PerlMonks. Archived from the original on July 22, 2011. Retrieved May 16, 2011.
  134. ^ Greg Bacon (May 28, 1999). "Re: Incrementing a value in a slice". Newsgroupcomp.lang.perl.misc. Usenet: [email protected]. Archived from the original on July 7, 2011. Retrieved July 12, 2011.
  135. ^ Back, Adam. "RSA in 5 lines of perl". Archived from the original on January 19, 2011. Retrieved January 10, 2011.
  136. ^ "Code Golf: What is Code Golf?". 29degrees. 2007. Archived from the original on January 13, 2012. Retrieved November 26, 2018.
  137. ^ Gallo, Felix (2003). "The Zeroth Obfuscated Perl Contest" (PDF). In Jon Orwant (ed.). Games, diversions, and Perl culture: best of the Perl journal. O'Reilly Media. Archived from the original (PDF) on November 22, 2009. Retrieved January 12, 2011.
  138. ^ "Perl Poetry". PerlMonks. Archived from the original on September 27, 2007. Retrieved January 27, 2011.
  139. ^ Conway, Damian. "Lingua::Romana::Perligata -- Perl for the XXI-imum Century". Archived from the original on September 30, 2007. Retrieved June 15, 2006.
  140. ^ Brocard, Leon (May 22, 2014). "use Perl; Journal of acme". GrnLight.net. Archived from the original on May 22, 2014.
  141. ^ "Developer Update". Dr. Dobb's Developer Update. Miller-Freeman. 2. 1995.
  142. ^ a b Schwartz, Randal L. (1993). Learning Perl. O'Reilly & Associates. Bibcode:1993lepe.book.....S.
  143. ^ "perlintro". Perl 5 version 18.0 documentation. Perl 5 Porters and perldoc.perl.org. Archived from the original on January 9, 2011. Retrieved June 30, 2013.
  144. ^ "perlstyle". Perl 5 version 18.0 documentation. Perl 5 Porters and perldoc.perl.org. Archived from the original on June 26, 2013. Retrieved June 30, 2013.
  145. ^ a b "Perl 6 FAQ". Perl 6 Project. Archived from the original on July 1, 2013. Retrieved June 30, 2013.
  146. ^ a b chromatic (December 31, 2012). "The Implementation of Perl 5 versus Perl 6". Archived from the original on July 29, 2013. Retrieved June 30, 2013.

Further reading

External links