อ่าน 37 นาที
เพิร์ล
Perl เป็น ภาษาโปรแกรมแบบไดนามิก ที่ ตีความได้ และ มีระดับสูง สำหรับ วัตถุประสงค์ทั่วไป แม้ว่า Perl จะไม่ใช่คำย่ออย่างเป็นทางการ [ 8 ] แต่ ก็มีการใช้ คำย่อแบบย้อนกลับ ต่างๆ รวมถึง...
เพิร์ล
| เพิร์ล | |
|---|---|
| กระบวนทัศน์ | หลายกระบวนทัศน์ |
| ออกแบบโดย | แลร์รี่ วอลล์ |
| นักพัฒนา | แลร์รี่ วอลล์ |
| ปรากฏครั้งแรก | 18 ธันวาคม พ.ศ. 2530 [ 1 ] |
| เวอร์ชันเสถียร | 5.42.1 [ 2 ] / 8 มีนาคม 2026 |
| รุ่นทดลองใช้งาน | 5.43.11 [ 3 ] / 2 มิถุนายน 2026 |
| วินัยในการพิมพ์ | พลวัต |
| ภาษาการใช้งาน | ซี |
| โอเอส | ข้ามแพลตฟอร์ม |
| ใบอนุญาต | ลิขสิทธิ์ศิลปะ 1.0 [ 4 ] [ 5 ]หรือลิขสิทธิ์สาธารณะทั่วไปของ GNUเวอร์ชัน 1 หรือเวอร์ชันใดๆ ในภายหลัง[ 6 ] |
| นามสกุลไฟล์ | .plx, .pls, .pl, .pm, .xs, .t, .pod, .cgi, .psgi |
| เว็บไซต์ | เพิร์ล.org |
| ได้รับอิทธิพลจาก | |
| AWK , BASIC , C , C++ , Lisp , sed , Unix shell [ 7 ] | |
| ได้รับอิทธิพล | |
| คอฟฟี่สคริปต์ , กรูวี , JavaScript , จูเลีย , LPC , PHP , ไพธอน , ราคุ , รูบี้ , พาวเวอร์เชลล์ | |
Perlเป็นภาษาโปรแกรมแบบไดนามิกที่ตีความได้และมีระดับสูงสำหรับวัตถุประสงค์ทั่วไปแม้ว่า Perl จะไม่ใช่คำย่ออย่างเป็นทางการ[ 8 ] แต่ ก็มีการใช้คำย่อแบบย้อนกลับ ต่างๆ รวมถึง "Practical Extraction and Reporting Language" [ 9 ]
ภาษา Perl พัฒนาโดยLarry Wall ในปี 1987 ในฐานะ ภาษาสคริปต์Unix อเนกประสงค์เพื่อทำให้การประมวลผลรายงานง่ายขึ้น[ 10 ] [ 11 ]นับตั้งแต่นั้นมา ภาษา Perl ได้มีการเปลี่ยนแปลงและปรับปรุงหลายครั้ง เดิมทีชื่อ Perl ไม่ได้ใช้ตัวพิมพ์ใหญ่ และชื่อได้เปลี่ยนมาใช้ตัวพิมพ์ใหญ่เมื่อ Perl 4 ออกวางจำหน่าย[ 11 ]เวอร์ชันล่าสุดคือ Perl 5 ซึ่งออกวางจำหน่ายครั้งแรกในปี 1994 ตั้งแต่ปี 2000 ถึงตุลาคม 2019 มีการพัฒนาเวอร์ชันที่หกของ Perl โดยเวอร์ชันที่หกนี้เปลี่ยนชื่อเป็นRaku [ 12 ] [ 13 ] ทั้งสองภาษายังคงได้รับการพัฒนาอย่างอิสระโดยทีมพัฒนาที่แตกต่างกัน ซึ่งยืมแนวคิดจากกันและกันอย่างมากมาย
Perl ยืมคุณสมบัติจากภาษาโปรแกรมอื่นๆ รวมถึงC , sh , AWKและsed [ 1 ] มันมีสิ่งอำนวยความสะดวกในการประมวลผลข้อความโดยไม่มีข้อจำกัดความยาวข้อมูลตามอำเภอใจของเครื่องมือบรรทัดคำสั่ง Unix ร่วมสมัยหลายๆ ตัว[ 14 ] Perlเป็นภาษาโปรแกรมที่มีความสามารถในการแสดงออก สูง : ซอร์สโค้ดสำหรับอัลกอริทึมที่กำหนดสามารถสั้นและบีบอัดได้สูง[ 15 ] [ 16 ]
Perl ได้รับความนิยมอย่างแพร่หลายในช่วงกลางทศวรรษ 1990 ในฐานะ ภาษา สคริปต์ CGIส่วนหนึ่งเนื่องมาจากความสามารถในการแยกวิเคราะห์นิพจน์ปกติและสตริง ที่มีประสิทธิภาพ [ 17 ] [ 18 ] [ 19 ] [ 20 ]นอกเหนือจาก CGI แล้ว Perl 5 ยังใช้สำหรับการบริหารระบบการเขียนโปรแกรมเครือข่ายการเงิน ชีวสารสนเทศและแอปพลิเคชันอื่นๆ เช่น สำหรับส่วนติดต่อผู้ใช้แบบกราฟิก (GUI) Perl ได้รับฉายาว่า "เลื่อยไฟฟ้าสารพัดประโยชน์ของภาษาสคริปต์" เนื่องจากความยืดหยุ่นและพลังของมัน[ 21 ]ในปี 1998 มันยังถูกเรียกว่า " เทปกาวที่ยึดอินเทอร์เน็ตไว้ด้วยกัน" ซึ่งหมายถึงทั้งการใช้งานอย่างแพร่หลายในฐานะภาษาเชื่อมต่อและภาพลักษณ์ที่ไม่สวยงาม[ 22 ]
ชื่อและโลโก้
เดิมที Perl มีชื่อว่า "Pearl" Wall ต้องการตั้งชื่อภาษาให้สั้นและมีความหมายเชิงบวก[ 23 ]อย่างไรก็ตาม Wall ค้นพบ ภาษา PEARL ที่มีอยู่ ก่อนการเปิดตัว Perl อย่างเป็นทางการ และตัดตัวอักษร "a" ออกจากชื่อ[ 24 ]
บางครั้งชื่อนี้จะถูกขยายเป็นbackronym : Practical Extraction and Report Language [ 25 ]และ Wall's own Pathologically Eclectic Rubbish Listerซึ่งอยู่ในหน้าคู่มือสำหรับ perl [ 26 ]
หนังสือ Programming Perlที่ตีพิมพ์โดยO'Reilly Mediaมีรูปอูฐดรอเมดารีอยู่บนปก และมักถูกเรียกว่า "หนังสืออูฐ" [ 27 ]ภาพนี้ได้กลายเป็นสัญลักษณ์ที่ไม่เป็นทางการของ Perl O'Reilly เป็นเจ้าของภาพนี้ในฐานะเครื่องหมายการค้าแต่ให้สิทธิ์ใช้งานเพื่อ วัตถุประสงค์ ที่ไม่ใช่เชิงพาณิชย์โดยกำหนดให้ต้องมีการระบุแหล่งที่มาและลิงก์ไปยัง www.perl.com เท่านั้น การอนุญาตให้ใช้งานเชิงพาณิชย์จะพิจารณาเป็นรายกรณี[ 28 ] O'Reilly ยังจัดเตรียมโลโก้ "Programming Republic of Perl" สำหรับเว็บไซต์ที่ไม่ใช่เชิงพาณิชย์ และปุ่ม "Powered by Perl" สำหรับเว็บไซต์ใดๆ ที่ใช้ Perl [ 28 ]
มูลนิธิ Perlเป็นเจ้าของสัญลักษณ์ทางเลือกอีกแบบหนึ่งคือหัวหอม ซึ่งอนุญาตให้บริษัทในเครือ Perl Mongers, PerlMonks, Perl.org และอื่นๆ ใช้[ 29 ]สัญลักษณ์นี้เป็นการเล่นคำเชิงภาพกับคำว่า หัว หอมไข่มุก[ 30 ]
ในปี 2024 โลโก้อูฐตัวใหม่สำหรับภาษานี้ได้รับการเผยแพร่[ 31 ]ภายใต้ ใบอนุญาต Creative Commonsโดยกลุ่มนักพัฒนาขนาดเล็ก แม้จะไม่ใช่โลโก้อย่างเป็นทางการ แต่ก็มีจุดประสงค์เพื่อเป็นตัวแทนทั้งภาษาและชุมชน และดึงเอาความสัมพันธ์อันยาวนานของ Perl กับอูฐจากหนังสือของ O'Reilly มาใช้
ประวัติศาสตร์
เวอร์ชันแรกๆ
Larry Wallเริ่มพัฒนา Perl ในปี 1987 ขณะทำงานเป็นโปรแกรมเมอร์ที่Unisys [ 14 ]เขาปล่อยเวอร์ชัน 1.0 ในวันที่ 18 ธันวาคม 1987 [ 1 ] Wall ได้นำวิธีการบางอย่างจากภาษาที่มีอยู่ซึ่งใช้สำหรับการจัดการข้อความมาใช้กับ Perlใน ช่วงแรก
Perl 2 ซึ่งวางจำหน่ายในเดือนมิถุนายน พ.ศ. 2531 [ 32 ] [ 33 ]มีเอ็นจิ้นนิพจน์ปกติที่ดีกว่า Perl 3 ซึ่งวางจำหน่ายในเดือนตุลาคม พ.ศ. 2532 [ 32 ]เพิ่มการสนับสนุนสำหรับสตรีมข้อมูลไบนารี[ 34 ]
ทศวรรษ 1990
เดิมที เอกสารประกอบการใช้งาน Perl มีเพียงหน้าคู่มือ (man page ) ยาวๆ หน้าเดียวเท่านั้น ในปี 1991 หนังสือ Programming Perlซึ่งโปรแกรมเมอร์ Perl หลายคนรู้จักในชื่อ "Camel Book" เพราะปกหนังสือ ได้ถูกตีพิมพ์และกลายเป็น หนังสืออ้างอิง มาตรฐานสำหรับภาษา Perl [ 35 ]ในเวลาเดียวกัน หมายเลขเวอร์ชันของ Perl ก็ถูกเพิ่มเป็น 4 ไม่ใช่เพื่อบ่งบอกถึงการเปลี่ยนแปลงครั้งใหญ่ในภาษา แต่เพื่อระบุเวอร์ชันที่มีเอกสารประกอบอย่างดีในหนังสือเล่มนี้[ 36 ] Perl 4 ได้รับการเผยแพร่ในเดือนมีนาคม พ.ศ. 2534 [ 32 ]
Perl 4 ผ่านการออกเวอร์ชันปรับปรุงแก้ไข หลายครั้ง โดยเวอร์ชันสุดท้ายคือ Perl 4.036 ในปี 1993 หลังจากนั้น Wall ก็ละทิ้ง Perl 4 เพื่อเริ่มทำงานกับ Perl 5 การออกแบบเบื้องต้นของ Perl 5 ยังคงดำเนินต่อไปจนถึงปี 1994 รายชื่อผู้รับจดหมายperl5-porters ก่อตั้งขึ้นในเดือนพฤษภาคม 1994 เพื่อประสานงานการพอร์ต Perl 5 ไปยังแพลตฟอร์มต่างๆ ยังคงเป็นฟอรัมหลักสำหรับการพัฒนา การบำรุงรักษา และการพอร์ต Perl 5 [ 37 ]
Perl 5.000 เปิดตัวเมื่อวันที่ 17 ตุลาคม พ.ศ. 2537 [ 38 ]มันเป็นการเขียนตัวแปลภาษา ขึ้นใหม่เกือบทั้งหมด และเพิ่มคุณสมบัติใหม่ ๆ มากมายให้กับภาษา รวมถึงออบ เจ็กต์ การอ้างอิง ตัวแปรแบบ เลกซิคัล (my)และโมดูลที่สำคัญ โมดูลเป็นกลไกในการขยายภาษาโดยไม่ต้องแก้ไขตัวแปลภาษา ซึ่งทำให้ตัวแปลภาษาหลักมีความเสถียรมากขึ้น แม้ว่าจะช่วยให้โปรแกรมเมอร์ Perl ทั่วไปสามารถเพิ่มคุณสมบัติภาษาใหม่ ๆ ได้ก็ตาม Perl 5 ได้รับการพัฒนาอย่างต่อเนื่องนับตั้งแต่นั้นเป็นต้นมา
Perl 5.001 เปิดตัวเมื่อวันที่ 13 มีนาคม พ.ศ. 2538 Perl 5.002 เปิดตัวเมื่อวันที่ 29 กุมภาพันธ์ พ.ศ. 2539 พร้อมคุณสมบัติต้นแบบใหม่ ซึ่งทำให้ผู้เขียนโมดูลสามารถสร้างรูทีนย่อย ที่มีพฤติกรรมเหมือน ฟังก์ชันในตัวของ Perl ได้ Perl 5.003 เปิดตัวเมื่อวันที่ 25 มิถุนายน พ.ศ. 2539 ในฐานะเวอร์ชันแก้ไขช่องโหว่ด้านความปลอดภัย[ 39 ]
หนึ่งในเหตุการณ์สำคัญที่สุดในประวัติศาสตร์ของ Perl 5 เกิดขึ้นนอกตัวภาษาเอง และเป็นผลมาจากการสนับสนุนโมดูล เมื่อวันที่ 26 ตุลาคม พ.ศ. 2538 เครือข่ายเก็บถาวร Perl ที่ครอบคลุม (CPAN) ได้ถูกจัดตั้งขึ้นเพื่อเป็นที่เก็บข้อมูลสำหรับภาษา Perl และโมดูล Perlณ เดือนธันวาคม พ.ศ. 2565 เครือข่ายนี้มีโมดูลมากกว่า 211,850 โมดูลใน 43,865 การแจกจ่าย ซึ่งเขียนโดยผู้เขียนมากกว่า 14,324 คน และมีการทำสำเนาไว้ทั่วโลกในกว่า 245 แห่ง[ 40 ]
Perl 5.004 ได้รับการเผยแพร่เมื่อวันที่ 15 พฤษภาคม พ.ศ. 2540 และรวมถึงแพ็คเกจ UNIVERSAL ซึ่งทำให้ Perl มีวัตถุพื้นฐานที่คลาส ทั้งหมด ได้รับการสืบทอดโดยอัตโนมัติ และความสามารถในการเรียกใช้โมดูลเวอร์ชันต่างๆ การพัฒนาที่สำคัญอีกประการหนึ่งคือการรวมโมดูลCGI.pm [ 41 ]ซึ่งมีส่วนทำให้ Perl เป็นที่นิยมในฐานะภาษาสคริปต์ CGI [ 42 ]
Perl 5.004 เพิ่มการสนับสนุนสำหรับMicrosoft Windows , Plan 9 , QNXและAmigaOS [ 41 ]
Perl 5.005 ได้รับการเผยแพร่เมื่อวันที่ 22 กรกฎาคม พ.ศ. 2541 การเผยแพร่ครั้งนี้ประกอบด้วยการปรับปรุงหลายอย่างสำหรับ เอ็นจิ้น regexการเชื่อมต่อใหม่เข้ากับแบ็กเอนด์ผ่านB::*โมดูลqr//ตัวดำเนินการอ้างอิง regex โมดูลหลักใหม่จำนวนมาก และเพิ่มการสนับสนุนสำหรับระบบปฏิบัติการเพิ่มเติมอีกหลายระบบ รวมถึง BeOS [ 43 ]
2000–2020
| เวอร์ชันหลัก[ 38 ] | อัปเดตล่าสุด[ 44 ] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 5.4 | 29 เมษายน 1999 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.5 | 23 กุมภาพันธ์ 2547 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.6 | 15 พฤศจิกายน 2546 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.8 | 14 ธันวาคม 2551 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.10 | 22 สิงหาคม 2552 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.12 | 10 พฤศจิกายน 2012 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.14 | 10 มีนาคม 2556 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.16 | 11 มีนาคม 2556 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.18 | 1 ตุลาคม 2557 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.20 | 12 กันยายน 2558 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.22 | 15 กรกฎาคม 2560 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.24 | 14 เมษายน 2561 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.26 | 29 พฤศจิกายน 2018 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.28 | 1 มิถุนายน 2020 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.30 | 1 มิถุนายน 2020 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.32 | 23 มกราคม 2021 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.34 | 29 พฤศจิกายน 2023 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.36 | 29 พฤศจิกายน 2023 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.38 | 13 เมษายน 2568 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.40 | 13 เมษายน 2568 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5.42 | 2025-07-03 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ไม่ได้รับการสนับสนุน ได้รับการสนับสนุน เวอร์ชั่นล่าสุด เวอร์ชันตัวอย่าง เวอร์ชันในอนาคต | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Perl 5.6 เปิดตัวเมื่อวันที่ 22 มีนาคม พ.ศ. 2543 การเปลี่ยนแปลงที่สำคัญได้แก่การรองรับ64 บิต การแสดงสตริง Unicodeการรองรับไฟล์ที่มีขนาดเกิน 2 GiB และคำหลัก "our" [ 45 ] [ 46 ]ในระหว่างการพัฒนา Perl 5.6 ได้มีการตัดสินใจเปลี่ยน รูปแบบ การกำหนดเวอร์ชันให้คล้ายกับโครงการโอเพนซอร์สอื่นๆ มากขึ้น หลังจาก 5.005_63 เวอร์ชันถัดไปจะเป็น 5.5.640 โดยมีแผนสำหรับเวอร์ชันที่กำลังพัฒนาให้ใช้หมายเลขคี่ และเวอร์ชันที่เสถียรให้ใช้หมายเลขคู่[ 47 ]
ในปี 2000 Wall ได้เรียกร้องให้ชุมชนเสนอแนะสำหรับ Perl เวอร์ชันใหม่ กระบวนการนี้ส่งผลให้เกิดเอกสาร RFC ( Request for Comments ) จำนวน 361 ฉบับ ซึ่งจะนำมาใช้เป็นแนวทางในการพัฒนา Perl 6 ในปี 2001 [ 48 ]งานได้เริ่มต้นขึ้นกับ "Apocalypses" สำหรับ Perl 6 ซึ่งเป็นชุดเอกสารที่มุ่งสรุปคำขอเปลี่ยนแปลงและนำเสนอการออกแบบของ Perl รุ่นต่อไป เอกสารเหล่านี้ถูกนำเสนอในรูปแบบบทสรุปของ RFC มากกว่าจะเป็นเอกสารอย่างเป็นทางการ ในขณะนั้น Perl 6 มีอยู่เพียงในฐานะคำอธิบายของภาษาเท่านั้น
Perl 5.8 เปิดตัวครั้งแรกเมื่อวันที่ 18 กรกฎาคม พ.ศ. 2545 และมีการเปิดตัวเวอร์ชัน 5.X เพิ่มเติมประมาณปีละครั้งนับตั้งแต่นั้นมา Perl 5.8 ปรับปรุงการรองรับ Unicode เพิ่มการใช้งาน I/O ใหม่ เพิ่มการใช้งานเธรดใหม่ ปรับปรุงความแม่นยำของตัวเลข และเพิ่มโมดูลใหม่หลายโมดูล[ 49 ]ณ ปี พ.ศ. 2556 เวอร์ชันนี้ยังคงเป็นเวอร์ชัน Perl ที่ได้รับความนิยมมากที่สุดและถูกใช้โดยRed Hat Linux 5, SUSE Linux 10, Solaris 10, HP-UX 11.31 และAIX 5
ในปี 2547 งานเกี่ยวกับ "บทสรุป" เริ่มขึ้น ซึ่งเป็นเอกสารที่เดิมทีสรุปเรื่องราววันสิ้นโลก แต่ต่อมากลายเป็นข้อกำหนดสำหรับภาษา Perl 6 ในเดือนกุมภาพันธ์ 2548 Audrey Tangเริ่มทำงานเกี่ยวกับPugsซึ่งเป็นตัวแปลภาษา Perl 6 ที่เขียนด้วยHaskell [ 50 ]นี่เป็นความพยายามครั้งแรกอย่างจริงจังที่จะทำให้ Perl 6 เป็นจริง ความพยายามนี้หยุดชะงักลงในปี 2549 [ 51 ]
โครงการ Perl On New Internal Engine (PONIE) มีอยู่ตั้งแต่ปี 2003 จนถึงปี 2006 จุดประสงค์คือเพื่อเป็นสะพานเชื่อมระหว่าง Perl 5 และ 6 และเป็นความพยายามที่จะเขียนตัวแปลภาษา Perl 5 ใหม่ให้ทำงานบนเครื่องเสมือน Parrot ของ Perl 6 เป้าหมายคือเพื่อให้มั่นใจถึงอนาคตของโค้ด Perl 5 หลายล้านบรรทัดในบริษัทหลายพันแห่งทั่วโลก[ 52 ]โครงการ PONIE สิ้นสุดลงในปี 2006 และไม่มีการพัฒนาอย่างต่อเนื่องอีกต่อไป การปรับปรุงบางส่วนที่ทำกับตัวแปลภาษา Perl 5 ซึ่งเป็นส่วนหนึ่งของ PONIE ได้ถูกรวมเข้ากับโครงการนั้นแล้ว[ 53 ]
เมื่อวันที่ 18 ธันวาคม พ.ศ. 2550 ซึ่งเป็นวันครบรอบ 20 ปีของ Perl 1.0 ได้มีการปล่อย Perl 5.10.0 ออกมา Perl 5.10.0 มีคุณสมบัติใหม่ที่โดดเด่นหลายประการ ซึ่งทำให้ใกล้เคียงกับ Perl 6 มากขึ้น คุณสมบัติเหล่านี้ได้แก่คำสั่ง switch (เรียกว่า "given"/"when"), การอัปเดต regular expressions และตัวดำเนินการ smart match (~~) [ 54 ] [ 55 ] ในช่วงเวลาเดียวกันนี้ การพัฒนา Perl 6 เวอร์ชันอื่นที่เรียกว่าRakudo Perl ซึ่งพัฒนาควบคู่ไปกับParrot virtual machine ได้เริ่มต้นขึ้นอย่างจริงจัง ณ เดือนพฤศจิกายน พ.ศ. 2552 Rakudo Perl ได้มีการออกเวอร์ชันใหม่เป็นประจำทุกเดือน และปัจจุบันเป็นเวอร์ชันที่สมบูรณ์ที่สุดของ Perl 6
การเปลี่ยนแปลงครั้งสำคัญในกระบวนการพัฒนา Perl 5 เกิดขึ้นใน Perl 5.11 โดยชุมชนนักพัฒนาได้เปลี่ยนมาใช้รอบการปล่อยเวอร์ชันพัฒนาเป็นรายเดือน และกำหนดการปล่อยเวอร์ชันเสถียรเป็นรายปี ตามแผนนี้ การปล่อยเวอร์ชันแก้ไขข้อบกพร่องจะตามมาหลังจากเวอร์ชันเสถียรทุกๆ สามเดือน
เมื่อวันที่ 12 เมษายน 2553 Perl 5.12.0 ได้รับการเผยแพร่ การปรับปรุงหลักที่โดดเด่น ได้แก่package NAME VERSIONไวยากรณ์ ใหม่ ตัวดำเนินการ yada yada (มีจุดประสงค์เพื่อทำเครื่องหมายโค้ดตัวยึดตำแหน่งที่ยังไม่ได้ใช้งาน) stricture โดย ปริยาย การปฏิบัติตามมาตรฐาน Y2038 อย่างสมบูรณ์ การโอเวอร์โหลดการแปลง regex การสนับสนุน DTraceและUnicode 5.2 [ 56 ]
เมื่อวันที่ 14 พฤษภาคม 2554 Perl 5.14 ได้รับการเผยแพร่พร้อม การรองรับ JSONในตัว[ 57 ]
เมื่อวันที่ 20 พฤษภาคม 2555 Perl 5.16 ได้ถูกปล่อยออกมา คุณสมบัติใหม่ที่โดดเด่น ได้แก่ ความสามารถในการระบุเวอร์ชันของ Perl ที่ต้องการจำลอง ทำให้ผู้ใช้สามารถอัปเกรดเวอร์ชันของ Perl ได้ แต่ยังคงสามารถเรียกใช้สคริปต์เก่าๆ ที่ปกติแล้วจะไม่เข้ากันได้[ 58 ] Perl 5.16 ยังอัปเดตแกนหลักเพื่อรองรับUnicode 6.1 อีกด้วย [ 58 ]
เมื่อวันที่ 18 พฤษภาคม 2556 Perl 5.18 ได้รับการเผยแพร่ คุณสมบัติใหม่ที่น่าสนใจ ได้แก่ hook dtrace ใหม่, sub lexical, sub CORE:: เพิ่มเติม, การปรับปรุง hash เพื่อความปลอดภัย และการสนับสนุน Unicode 6.2 [ 59 ]
เมื่อวันที่ 27 พฤษภาคม 2557 Perl 5.20 ได้ถูกปล่อยออกมา คุณสมบัติใหม่ที่น่าสนใจ ได้แก่ ลายเซ็นซับรูทีน การแบ่งส่วนแฮช/ไวยากรณ์การแบ่งส่วนใหม่ การอ้างอิงโพสต์ฟิกซ์ (ทดลอง) Unicode 6.3 และฟังก์ชัน rand() ที่ใช้ตัวสร้างเลขสุ่มที่สอดคล้องกัน[ 60 ]
ผู้สังเกตการณ์บางคนเชื่อว่าการเปิดตัว Perl 5.10 เป็นจุดเริ่มต้นของขบวนการ Modern Perl [ 61 ]โดยเฉพาะอย่างยิ่ง วลีนี้อธิบายถึงรูปแบบการพัฒนาที่ยอมรับการใช้ CPAN ใช้ประโยชน์จากการพัฒนาล่าสุดในภาษา และมีความเข้มงวดในการสร้างโค้ดคุณภาพสูง[ 62 ]แม้ว่าหนังสือModern Perl [ 63 ]อาจเป็นมาตรฐานที่โดดเด่นที่สุดของแนวคิดนี้ แต่กลุ่มอื่นๆ เช่น Enlightened Perl Organization [ 64 ]ก็ได้หยิบยกประเด็นนี้ขึ้นมาเช่นกัน
ในช่วงปลายปี 2012 และ 2013 โครงการต่างๆ สำหรับการใช้งานทางเลือกสำหรับ Perl 5 ได้เริ่มต้นขึ้นหลายโครงการ ได้แก่ Perl5 ในPerl6โดยทีม Rakudo Perl [ 65 ] moeโดย Stevan Little และเพื่อนๆ[ 66 ] p2 [ 67 ]โดยทีม Perl11 ภายใต้การนำของ Reini Urban, gperlโดย goccy [ 68 ]และrperl ซึ่งเป็นโครงการ Kickstarter ที่นำโดย Will Braswell และเกี่ยวข้องกับโครงการ Perl11 [ 69 ]
Perl 6 และ Raku

ในการประชุม Perl Conference ปี 2000 Jon Orwant ได้เสนอแนวคิดริเริ่มภาษาใหม่ที่สำคัญ[ 71 ] ซึ่งนำไปสู่การตัดสินใจเริ่มดำเนินการออกแบบภาษาใหม่ โดยจะเรียกว่า Perl 6 มีการขอข้อเสนอสำหรับคุณสมบัติภาษาใหม่จากชุมชน Perl โดยรวม ซึ่งส่ง RFCมากกว่า 300 รายการ[ 72 ]
วอลล์ใช้เวลาหลายปีถัดมาในการศึกษา RFC และสังเคราะห์พวกมันให้เป็นกรอบการทำงานที่สอดคล้องกันสำหรับ Perl 6 เขานำเสนอการออกแบบ Perl 6 ของเขาในชุดเอกสารที่เรียกว่า "apocalypses" ซึ่งมีหมายเลขตรงกับบทต่างๆ ในProgramming Perlณ เดือนมกราคม 2011 ข้อกำหนดที่กำลังพัฒนาของ Perl 6 ได้ถูกรวบรวมไว้ในเอกสารการออกแบบที่เรียกว่า Synopses ซึ่งมีหมายเลขตรงกับ Apocalypses [ 73 ]
งานวิทยานิพนธ์ของBradley M. Kuhnซึ่งอยู่ภายใต้การดูแลของ Wall ได้พิจารณาถึงความเป็นไปได้ในการใช้เครื่องเสมือน Javaเป็นรันไทม์สำหรับ Perl [ 74 ] วิทยานิพนธ์ของ Kuhn แสดงให้เห็นว่าแนวทางนี้มีปัญหา ในปี 2001 มีการตัดสินใจว่า Perl 6 จะทำงานบน เครื่องเสมือนข้ามภาษาที่ เรียกว่าParrot
ในปี พ.ศ. 2548 Audrey Tangได้สร้าง โครงการ Pugsซึ่งเป็นการนำ Perl 6 มาใช้ในHaskellโครงการนี้ทำหน้าที่เป็นแพลตฟอร์มทดสอบสำหรับภาษา Perl 6 (แยกต่างหากจากการพัฒนาการใช้งานจริง) ทำให้นักออกแบบภาษาสามารถสำรวจได้ โครงการ Pugs ก่อให้เกิดชุมชนข้ามภาษา Perl/Haskell ที่มีชีวิตชีวา โดยมีศูนย์กลางอยู่ที่ช่อง IRC #raku ในLibera Chatทีมออกแบบ Perl 6 ได้รับอิทธิพลจากการเขียนโปรแกรมเชิงฟังก์ชันมากมาย[ 75 ]
ในปี 2012 การพัฒนา Perl 6 มุ่งเน้นไปที่คอมไพเลอร์สองตัวเป็นหลัก: [ 76 ]
- Rakudoเป็นการใช้งานที่ทำงานบนเครื่องเสมือน Parrot และเครื่องเสมือน Java [ 77 ]
- Nieczaซึ่งมุ่งเป้าไปที่Common Language Runtime (CLL )
ในปี 2013 มีการประกาศเปิด ตัว MoarVM ("Metamodel On A Runtime") ซึ่งเป็น เครื่องเสมือนที่ใช้ภาษา C โดยออกแบบมาเพื่อใช้งานกับ Rakudo เป็นหลัก[ 78 ]
ในเดือนตุลาคม พ.ศ. 2562 Perl 6 ได้รับการเปลี่ยนชื่อเป็น Raku [ 79 ]
ณ ปี 2017 มีเพียงการใช้งาน Rakudo และ MoarVM เท่านั้นที่อยู่ระหว่างการพัฒนาอย่างต่อเนื่อง ส่วนเครื่องเสมือนอื่นๆ เช่น Java Virtual Machine และJavaScriptได้รับการสนับสนุน[ 80 ]
เพิร์ล 7
ในเดือนมิถุนายน พ.ศ. 2563 Perl 7 ได้รับการประกาศให้เป็นรุ่นต่อจาก Perl 5 [ 81 ] Perl 7 จะใช้ Perl 5.32 เป็นพื้นฐานในเบื้องต้น โดยคาดว่าจะวางจำหน่ายในช่วงครึ่งแรกของปี พ.ศ. 2564 และรุ่นทดลองใช้งานจะวางจำหน่ายเร็วกว่านั้น[ 82 ]
แผนนี้ได้รับการแก้ไขในเดือนพฤษภาคม 2021 โดยไม่มีการระบุช่วงเวลาวางจำหน่ายหรือเวอร์ชันของ Perl 5 ที่จะใช้เป็นพื้นฐาน[ 83 ]เมื่อ Perl 7 วางจำหน่าย Perl 5 จะเข้าสู่การบำรุงรักษาระยะยาว อย่างไรก็ตาม เวอร์ชัน Perl 5 ที่ได้รับการสนับสนุนจะยังคงได้รับการแก้ไขด้านความปลอดภัยและข้อบกพร่องที่สำคัญต่อไป[ 84 ]
Perl 7 ได้รับการประกาศเมื่อวันที่ 24 มิถุนายน 2020 ในงาน "The Perl Conference in the Cloud" ในฐานะผู้สืบทอดต่อจาก Perl 5 [ 82 ] [ 81 ]โดยอิงจาก Perl 5.32 Perl 7 ได้รับการวางแผนให้สามารถใช้งานร่วมกับโค้ด Perl 5 สมัยใหม่ได้ โค้ด Perl 5 ที่ไม่มี ส่วนหัว boilerplate (pragma) จำเป็นต้องเพิ่มuse compat::perl5;เพื่อให้ยังคงใช้งานร่วมกันได้ แต่โค้ดสมัยใหม่สามารถลด boilerplate บางส่วนได้
แผนการที่จะเปลี่ยนไปใช้ Perl 7 ก่อให้เกิดการอภิปรายมากขึ้น และคณะกรรมการกำกับดูแล Perl ได้ยกเลิกแผนดังกล่าวเพื่อหลีกเลี่ยงปัญหาความเข้ากันได้กับเวอร์ชันก่อนหน้าสำหรับสคริปต์ที่ไม่ได้เขียนตาม pragmas และโมดูลที่จะกลายเป็นค่าเริ่มต้นใน Perl 7 Perl 7 จะออกมาก็ต่อเมื่อนักพัฒนาเพิ่มคุณสมบัติมากพอที่จะรับประกันการอัปเกรดเวอร์ชันหลัก[ 85 ]
ออกแบบ
ปรัชญา
ตามที่ Wall กล่าว Perl มีสโลแกนสองข้อ ข้อแรกคือ "มีมากกว่าหนึ่งวิธีที่จะทำ" ซึ่งรู้จักกันทั่วไปในชื่อ TMTOWTDI (อ่านว่าทิม โทดี้ ) ผู้สนับสนุนสโลแกนนี้โต้แย้งว่าปรัชญานี้ทำให้เขียนข้อความกระชับได้ง่าย[ 86 ] [ 87 ] [ 88 ]
สโลแกนที่สองคือ "สิ่งที่ง่ายควรจะง่าย และสิ่งที่ยากควรจะเป็นไปได้" [ 14 ]
การออกแบบของ Perl สามารถเข้าใจได้ว่าเป็นการตอบสนองต่อแนวโน้มหลักสามประการในอุตสาหกรรมคอมพิวเตอร์ ได้แก่ ต้นทุนฮาร์ดแวร์ที่ลดลง ต้นทุนแรงงานที่เพิ่มขึ้น และการปรับปรุง เทคโนโลยี คอมไพเลอร์ภาษาคอมพิวเตอร์รุ่นก่อนๆ หลายภาษา เช่นFortranและ C มีเป้าหมายเพื่อใช้ประโยชน์จากฮาร์ดแวร์คอมพิวเตอร์ที่มีราคาแพงอย่างมีประสิทธิภาพ ในทางตรงกันข้าม Perl ได้รับการออกแบบมาเพื่อให้โปรแกรมเมอร์สามารถเขียนโปรแกรมได้รวดเร็วและง่ายขึ้น[ 89 ]
Perl มีคุณสมบัติมากมายที่ช่วยให้โปรแกรมเมอร์ทำงานได้ง่ายขึ้นโดยแลกกับ ความต้องการ CPUและหน่วยความจำที่มากขึ้น คุณสมบัติเหล่านี้ได้แก่ การจัดการหน่วยความจำอัตโนมัติการ กำหนดประเภทแบบไดนามิกสตริง รายการ และแฮช นิพจน์ปกติการตรวจสอบ ภายใน และeval()ฟังก์ชัน Perl ปฏิบัติตามทฤษฎี "ไม่มีข้อจำกัดในตัว" [ 27 ]ซึ่งเป็นแนวคิดที่คล้ายกับกฎศูนย์หนึ่งอนันต์
วอลล์ได้รับการฝึกฝนในฐานะนักภาษาศาสตร์ และการออกแบบของ Perl ได้รับอิทธิพลอย่างมากจาก หลักการ ทางภาษาศาสตร์ตัวอย่างเช่นการเข้ารหัส Huffman (โครงสร้างทั่วไปควรสั้น) การถ่วงน้ำหนักที่ดีที่ส่วนท้าย (ข้อมูลที่สำคัญควรมาก่อน) และชุดข้อมูลพื้นฐานของภาษา จำนวนมาก Perl นิยมโครงสร้างภาษาที่กระชับและเป็นธรรมชาติสำหรับมนุษย์ในการเขียน แม้ว่าโครงสร้างเหล่านั้นจะทำให้ตัวแปลภาษา Perl ซับซ้อนขึ้นก็ตาม[ 90 ]
ไวยากรณ์ของ Perl สะท้อนแนวคิดที่ว่า "สิ่งต่างๆ ที่แตกต่างกันควรมีลักษณะที่แตกต่างกัน" [ 91 ]ตัวอย่างเช่น สเกลาร์ อาร์เรย์ และแฮชมีสัญลักษณ์นำหน้าที่แตกต่างกัน ดัชนีอาร์เรย์และคีย์แฮชใช้วงเล็บปีกกาที่แตกต่างกัน สตริงและนิพจน์ปกติมีตัวคั่นมาตรฐานที่แตกต่างกัน
ภาษา Perl และชุมชนและวัฒนธรรมที่อยู่รอบ ๆ ภาษา Perl มีแนวโน้มเชิงปฏิบัติที่กว้างขวาง คำนำของProgramming Perlเริ่มต้นด้วย: "Perl เป็นภาษาสำหรับการทำงานของคุณให้สำเร็จ" [ 14 ]ผลที่ตามมาประการหนึ่งคือ Perl ไม่ใช่ภาษาที่เรียบร้อย มันมีคุณสมบัติมากมาย ยอมรับข้อยกเว้นของกฎ และใช้ฮิวริสติกส์เพื่อแก้ไขความกำกวมทางไวยากรณ์ เนื่องจากธรรมชาติที่ให้อภัยของคอมไพเลอร์ บางครั้งจึงอาจหาบั๊กได้ยาก เอกสารฟังก์ชันของ Perl กล่าวถึงพฤติกรรมที่แตกต่างกันของฟังก์ชันในตัวในบริบทของรายการและสเกลาร์โดยกล่าวว่า "โดยทั่วไปแล้ว ฟังก์ชันเหล่านี้จะทำในสิ่งที่คุณต้องการ เว้นแต่คุณต้องการความสอดคล้อง" [ 92 ]
คุณสมบัติ
โครงสร้างโดยรวมของ Perl มาจาก C อย่างกว้างขวาง Perl มีลักษณะเป็นเชิงกระบวนการ โดย มีตัวแปรนิพจน์คำสั่งกำหนดค่าบล็อกที่คั่นด้วยวงเล็บปีกกาโครงสร้างควบคุมและรูทีนย่อย[ 93 ]
ภาษา Perl ยังนำเอาคุณสมบัติบางอย่างมาจากการเขียนโปรแกรมเชลล์ ตัวแปรทั้งหมดจะถูกทำเครื่องหมายด้วยสัญลักษณ์ นำหน้า ซึ่งช่วยให้สามารถแทรก ตัวแปรลงใน สตริงได้โดยตรงอย่างไรก็ตาม ต่างจากเชลล์ Perl ใช้สัญลักษณ์นำหน้าในการเข้าถึงตัวแปรทุกครั้ง และต่างจากภาษาโปรแกรมอื่นๆ ส่วนใหญ่ที่ใช้สัญลักษณ์นำหน้า สัญลักษณ์นำหน้าไม่ได้บ่งบอกถึงชนิดของตัวแปร แต่บ่งบอกถึงชนิดของนิพจน์ ดังนั้น ตัวอย่างเช่น อาร์เรย์จะถูกระบุด้วยสัญลักษณ์ "@" (เช่น@arrayname) สมาชิกแต่ละตัวของอาร์เรย์จะถูกระบุด้วยสัญลักษณ์สเกลาร์ "$" (เช่น$arrayname[3]) นอกจากนี้ Perl ยังมีฟังก์ชันในตัวมากมายที่ให้เครื่องมือที่มักใช้ในการเขียนโปรแกรมเชลล์ (แม้ว่าเครื่องมือเหล่านี้ส่วนใหญ่จะถูกนำไปใช้โดยโปรแกรมภายนอกเชลล์) เช่นการเรียงลำดับและการเรียกใช้ฟังก์ชัน ของระบบปฏิบัติการ
ภาษา Perl ใช้ โครงสร้าง ข้อมูลแบบแฮช ("อาร์เรย์แบบเชื่อมโยง") จากAWKและนิพจน์ปกติจากsedซึ่งช่วยลดความซับซ้อนของงานการแยกวิเคราะห์ การจัดการข้อความ และการจัดการข้อมูลหลายอย่าง สิ่งที่เหมือนกับภาษา Lispคือการส่งคืนค่าสุดท้ายในบล็อกโดยปริยาย และคำสั่งทั้งหมดก็เป็นนิพจน์ที่สามารถนำไปใช้ในนิพจน์ที่ใหญ่กว่าได้เช่นกัน
Perl 5 เพิ่มคุณสมบัติที่รองรับโครงสร้างข้อมูลที่ ซับซ้อน ฟังก์ชันระดับเฟิร์สคลาส (นั่นคือclosuresเป็นค่า) และโมเดลการเขียนโปรแกรมเชิงวัตถุ ซึ่งรวมถึงการอ้างอิง แพ็ก เกจ การเรียกใช้เมธอดตามคลาสและตัวแปรที่มีขอบเขตตามพจนานุกรมพร้อมด้วยคำสั่งคอมไพเลอร์ (เช่นstrictpragma ) คุณสมบัติเพิ่มเติมที่สำคัญที่นำเสนอใน Perl 5 คือความสามารถในการบรรจุโค้ดเป็นโมดูลที่นำกลับมาใช้ใหม่ได้ วอลล์กล่าวในภายหลังว่า "เจตนาทั้งหมดของระบบโมดูลของ Perl 5 คือการส่งเสริมการเติบโตของวัฒนธรรม Perl มากกว่าแกนหลักของ Perl" [ 94 ]
ภาษา Perl ทุกเวอร์ชันมีการตรวจสอบชนิดข้อมูลและการจัดการหน่วยความจำ โดยอัตโนมัติ ตัว แปลภาษาจะทราบชนิดและ ข้อกำหนด ในการจัดเก็บของวัตถุข้อมูลทุกชิ้นในโปรแกรม และจะจัดสรรและปล่อยพื้นที่จัดเก็บตามความจำเป็นโดยใช้การนับการอ้างอิง (ดังนั้นจึงไม่สามารถปล่อยพื้นที่จัดเก็บของโครงสร้างข้อมูลแบบวนซ้ำได้หากไม่มีการแทรกแซงด้วยตนเอง) การแปลงชนิด ข้อมูลที่ถูกต้อง เช่น การแปลงจากตัวเลขเป็นสตริง จะทำโดยอัตโนมัติในขณะรันไทม์การแปลงชนิดข้อมูลที่ไม่ถูกต้องถือเป็นข้อผิดพลาดร้ายแรง
ไวยากรณ์
Perl ถูกวิพากษ์วิจารณ์ว่าเป็น " เสียงรบกวนบรรทัด " และ "ภาษาที่เขียนได้อย่างเดียว" Randal L. SchwartzในหนังสือLearning Perl ฉบับพิมพ์ครั้งแรก [ 95 ]ในบทแรกกล่าวว่า "ใช่ บางครั้ง Perl ดูเหมือนเสียงรบกวนบรรทัดสำหรับผู้ที่ไม่คุ้นเคย แต่สำหรับโปรแกรมเมอร์ Perl ที่มีประสบการณ์ มันดูเหมือนเสียง รบกวนบรรทัด ที่มีการตรวจสอบความถูกต้องพร้อมภารกิจในชีวิต" [ 96 ]เขายังกล่าวอีกว่าข้อกล่าวหาที่ว่า Perl เป็นภาษาที่เขียนได้อย่างเดียวสามารถหลีกเลี่ยงได้ด้วยการเขียนโค้ดด้วย "ความระมัดระวังที่เหมาะสม" [ 96 ]เอกสารภาพรวมของ Perl perlintro ระบุว่าชื่อของตัวแปรสเกลา ร์ "วิเศษ" ในตัว"ดูเหมือนเครื่องหมายวรรคตอนหรือเสียงรบกวนบรรทัด" [ 97 ]อย่างไรก็ตาม โมดูลภาษาอังกฤษมีทางเลือกภาษาอังกฤษทั้งแบบยาวและแบบสั้น เอกสาร perlstyleระบุว่าเสียงรบกวนบรรทัดในนิพจน์ปกติสามารถลดลงได้โดยใช้/xตัวแก้ไขเพื่อเพิ่มช่องว่าง[ 98 ]
ตาม คำถามที่พบบ่อย ของ Perl 6 [ 99 ] Perl 6 ได้รับการออกแบบมาเพื่อลด "ผู้ต้องสงสัยทั่วไป" ที่ทำให้เกิดข้อกล่าวหาเรื่อง "เสียงรบกวนของบรรทัด" จากนักวิจารณ์ Perl 5 รวมถึงการลบ "ตัวแปรเครื่องหมายวรรคตอนส่วนใหญ่" และการปรับปรุงไวยากรณ์ regex คำถามที่พบบ่อยของ Perl 6ยังระบุด้วยว่าสิ่งที่บางครั้งเรียกว่าเสียงรบกวนของบรรทัดของ Perl คือ "ไวยากรณ์ที่แท้จริงของภาษา" เช่นเดียวกับคำกริยาและคำบุพบทที่เป็นส่วนหนึ่งของภาษาอังกฤษ[ 99 ]ในโพสต์บล็อกเดือนธันวาคม 2012 แม้จะอ้างว่า "Rakudo Perl 6 ล้มเหลวและจะยังคงล้มเหลวต่อไปเว้นแต่จะได้รับการดูแลจากผู้ใหญ่" chromaticระบุว่าการออกแบบของ Perl 6 มี "ไวยากรณ์ที่กำหนดไว้อย่างดี" "ระบบประเภทที่ได้รับการปรับปรุง ระบบวัตถุที่เป็นหนึ่งเดียวพร้อมเมตาโมเดล อัจฉริยะ เมตาโอเปอเรเตอร์ และระบบบริบทที่ชัดเจนยิ่งขึ้นซึ่งให้ความสะดวกสบายเช่นความเกียจคร้านที่แพร่หลาย" [ 100 ]เขายังกล่าวอีกว่า "Perl 6 มีความสอดคล้องและสม่ำเสมอซึ่ง Perl 5 ขาดไป" [ 100 ]
ในภาษา Perl เราสามารถเขียนโปรแกรม "Hello, World!"ได้ดังนี้:
พิมพ์"สวัสดีโลก!\n" ;นี่คือโปรแกรม Perl ที่ซับซ้อนกว่าเดิม ซึ่งนับถอยหลังเป็นวินาทีจากค่าเริ่มต้นที่กำหนด:
#!/usr/bin/env perl use strict ; use warnings ;ของฉัน( $ที่เหลือ, $ทั้งหมด);ส่วนที่เหลือ= ผลรวม= เลื่อน( @ARGV );STDOUT -> autoflush ( 1 );ในขณะที่( $remaining ) { printf ( "เหลือ %s/%s \r" , $remaining -- , $total ); sleep 1 ; }พิมพ์"\n" ;ในการรันโค้ดข้างต้น ให้บันทึกโค้ดลงในไฟล์ชื่อcounter.plแล้วจึงเรียกใช้งาน
$ perl counter.pl 42ตัวแปลภาษา Perl สามารถใช้สำหรับสคริปต์แบบครั้งเดียวบนบรรทัดคำสั่งได้เช่นกัน ตัวอย่างต่อไปนี้ (เมื่อเรียกใช้จากเชลล์ที่เข้ากันได้กับ sh เช่นBash ) จะแปลงสตริง "Bob" ในไฟล์ทั้งหมดที่ลงท้ายด้วย .txt ในไดเร็กทอรีปัจจุบันเป็น "Robert":
$ perl -i.bak -lp -e 's/Bob/Robert/g' *.txt การดำเนินการ
ไม่มีข้อกำหนดหรือมาตรฐานที่เป็นลายลักษณ์อักษรสำหรับภาษา Perl สำหรับเวอร์ชัน Perl จนถึง Perl 5 และไม่มีแผนที่จะสร้างข้อกำหนดดังกล่าวสำหรับเวอร์ชันปัจจุบันของ Perl มีเพียงการใช้งานตัวแปลภาษาเพียงครั้งเดียว และภาษาได้พัฒนาไปพร้อมกับการใช้งานนั้น ตัวแปลภาษาดังกล่าวพร้อมกับการทดสอบการทำงาน ถือเป็นข้อกำหนดโดยพฤตินัยของภาษา อย่างไรก็ตาม Perl 6 เริ่มต้นด้วยข้อกำหนด[ 101 ]และมีหลายโครงการ[ 102 ]ที่มุ่งหมายที่จะนำข้อกำหนดบางส่วนหรือทั้งหมดไปใช้งาน
Perl ถูกพัฒนาขึ้นโดยใช้ภาษา C เป็นตัวแปลภาษาหลัก ร่วมกับโมดูลจำนวนมากที่เขียนด้วยภาษา Perl และ C ณ ปี 2010 ตัวแปลภาษานี้มีโค้ดภาษา C จำนวน 150,000 บรรทัด และคอมไพล์เป็นไฟล์ปฏิบัติการขนาด 1 MB บนสถาปัตยกรรมเครื่องทั่วไป หรืออีกทางเลือกหนึ่ง ตัวแปลภาษานี้สามารถคอมไพล์เป็นไลบรารีเชื่อมโยงและฝังในโปรแกรมอื่นๆ ได้ ในชุดการแจกจ่ายนี้มีโมดูลเกือบ 500 โมดูล ประกอบด้วยโค้ด Perl จำนวน 200,000 บรรทัด และโค้ดภาษา C อีก 350,000 บรรทัด (โค้ดภาษา C ในโมดูลส่วนใหญ่ประกอบด้วย ตาราง การเข้ารหัสอักขระ )
ตัวแปลภาษา Perl มีสถาปัตยกรรมเชิงวัตถุ องค์ประกอบทั้งหมดของภาษา Perl—ค่าคงที่ อาร์เรย์ แฮช รหัสอ้างอิง และตัวจัดการไฟล์ —ถูกแทนด้วยโครงสร้าง C ในตัวแปลภาษา การดำเนินการกับโครงสร้างเหล่านี้ถูกกำหนดโดย มาโครประเภทนิยามและ ฟังก์ชัน จำนวนมากซึ่งประกอบกันเป็นAPI ภาษา C ของ Perl API ของ Perl อาจดูสับสนสำหรับผู้ที่ไม่คุ้นเคย แต่จุดเริ่มต้นของมันเป็นไปตามรูปแบบการตั้งชื่อ ที่สอดคล้องกัน ซึ่งให้คำแนะนำแก่ผู้ใช้งาน
วงจรชีวิตของตัวแปลภาษา Perl แบ่งออกเป็นสองช่วงหลักๆ คือ ช่วงการคอมไพล์และช่วงการทำงาน[ 103 ]ตามที่ Aluín และคณะกล่าวไว้ว่า "ภาษา Perl ไม่สามารถแยกวิเคราะห์ได้ด้วยการรวมกันของ Lex/Yacc lexer/parser โดยตรง แต่ตัวแปลภาษาจะใช้ lexer ของตัวเอง ซึ่งทำงานร่วมกับ parser GNU bison ที่ได้รับการดัดแปลงเพื่อแก้ไขความกำกวมในภาษา" [ 104 ]
โดยส่วนใหญ่แล้วสิ่งที่เกิดขึ้นในขั้นตอนการคอมไพล์ของ Perl คือการคอมไพล์ และโดยส่วนใหญ่แล้วสิ่งที่เกิดขึ้นในขั้นตอนการรันของ Perl คือการประมวลผล แต่ก็มีข้อยกเว้นที่สำคัญอยู่บ้าง Perl ใช้ความสามารถในการประมวลผลโค้ด Perl ในระหว่างขั้นตอนการคอมไพล์อย่างมีประสิทธิภาพ นอกจากนี้ Perl ยังจะหน่วงเวลาการคอมไพล์ไปไว้ในขั้นตอนการรันด้วย คำที่บ่งบอกถึงประเภทของการประมวลผลที่เกิดขึ้นจริงในแต่ละช่วงเวลาคือเวลาคอมไพล์และเวลารัน Perl อยู่ในช่วงเวลาคอมไพล์เกือบตลอดเวลาในขั้นตอนการคอมไพล์ แต่เวลาคอมไพล์อาจเข้าสู่ขั้นตอนการรันได้เช่นกัน เวลาคอมไพล์สำหรับโค้ดในอาร์กิวเมนต์สตริงที่ส่งไปยังฟังก์ชันevalในตัวจะเกิดขึ้นในระหว่างขั้นตอนการรัน Perl มักจะอยู่ในช่วงเวลารันในระหว่างขั้นตอนการคอมไพล์ และใช้เวลาส่วนใหญ่ในขั้นตอนการรันอยู่ในช่วงเวลารัน โค้ดในBEGINบล็อกจะถูกประมวลผลในเวลารัน แต่ในขั้นตอนการคอมไพล์
ในระหว่างการคอมไพล์ ตัวแปลภาษาจะแยกวิเคราะห์โค้ด Perl เป็นโครงสร้างต้นไม้ไวยากรณ์ในระหว่างการทำงาน มันจะเรียกใช้โปรแกรมโดยการเดินไปตามโครงสร้างต้นไม้ข้อความจะถูกแยกวิเคราะห์เพียงครั้งเดียว และโครงสร้างต้นไม้ไวยากรณ์จะได้รับการปรับให้เหมาะสมก่อนที่จะถูกเรียกใช้งาน ดังนั้นการเรียกใช้งานจึงมีประสิทธิภาพค่อนข้างดี การปรับให้เหมาะสมในระหว่างการคอมไพล์บนโครงสร้างต้นไม้ไวยากรณ์ ได้แก่การพับค่าคงที่และการแพร่กระจายบริบท แต่การปรับให้เหมาะสมแบบ peepholeก็ดำเนินการเช่นกัน[ 105 ]
ภาษา Perl มีไวยากรณ์ที่สมบูรณ์แบบตามทฤษฎี Turing เนื่องจากการแยกวิเคราะห์สามารถได้รับผลกระทบจากโค้ดรันไทม์ที่ดำเนินการในระหว่างขั้นตอนการคอมไพล์[ 106 ]โค้ดไม่สามารถแยกวิเคราะห์ได้ด้วยตัวแยกวิเคราะห์Lex / Yaccโดยตรงเพื่อ แก้ไขความกำกวมในภาษา ตัวแปลภาษาจะต้องใช้ตัวแยกวิเคราะห์ของตนเองเพื่อประสานงานกับ ตัวแยกวิเคราะห์GNU bisonที่ได้รับการแก้ไข[ 107 ]
มักกล่าวกันว่า "มีเพียง Perl เท่านั้นที่สามารถแยกวิเคราะห์ Perl ได้" [ 108 ]หมายความว่ามีเพียงตัวแปลภาษา Perl เท่านั้นperlที่สามารถแยกวิเคราะห์ภาษา Perl ได้แต่โดยทั่วไปแล้วสิ่งนี้ก็ไม่เป็นความจริงเสมอไป เนื่องจากตัวแปลภาษา Perl สามารถจำลองเครื่องจักรทัวริงได้ในระหว่างขั้นตอนการคอมไพล์ จึงจำเป็นต้องตัดสินปัญหาการหยุดทำงานเพื่อให้การแยกวิเคราะห์เสร็จสมบูรณ์ในทุกกรณี เป็นผลลัพธ์ที่มีมายาวนานว่าปัญหาการหยุดทำงานนั้นไม่สามารถตัดสินได้ ดังนั้นแม้แต่ Perl ก็ไม่สามารถแยกวิเคราะห์ Perl ได้เสมอไป Perl เลือกที่จะให้ผู้ใช้เข้าถึงพลังการเขียนโปรแกรมอย่างเต็มที่ในขั้นตอนการคอมไพล์ของตนเอง ซึ่งเป็นทางเลือกที่ไม่ธรรมดา ต้นทุนในแง่ของความบริสุทธิ์ทางทฤษฎีนั้นสูง แต่ความไม่สะดวกในทางปฏิบัติดูเหมือนจะเกิดขึ้นได้ยาก[ 109 ]
โปรแกรมอื่นๆ ที่ดำเนินการวิเคราะห์ Perl เช่นโปรแกรมวิเคราะห์ซอร์สโค้ดและโปรแกรมจัดย่อหน้าอัตโนมัติต้องเผชิญกับปัญหาไม่เพียงแต่โครงสร้างทางไวยากรณ์ ที่ไม่ชัดเจนเท่านั้น แต่ยังรวมถึงความไม่สามารถตัดสินได้ในการวิเคราะห์ Perl ในกรณีทั่วไป ด้วย โครงการ PPI ของ Adam Kennedyมุ่งเน้นไปที่การวิเคราะห์โค้ด Perl ในฐานะเอกสาร (โดยคงความสมบูรณ์ของเอกสารไว้) แทนที่จะวิเคราะห์ Perl ในฐานะโค้ดที่สามารถเรียกใช้งานได้ (ซึ่งแม้แต่ Perl เองก็ไม่สามารถทำได้เสมอไป) Kennedy เป็นคนแรกที่ตั้งข้อสันนิษฐานว่า "การวิเคราะห์ Perl ประสบปัญหา 'ปัญหาการหยุดทำงาน'" [ 110 ]ซึ่งต่อมาได้รับการพิสูจน์แล้ว[ 111 ]
Perl มาพร้อมกับการทดสอบการทำงาน มากกว่า 250,000 รายการสำหรับภาษา Perl หลัก และการทดสอบการทำงานมากกว่า 250,000 รายการสำหรับโมดูลหลัก การทดสอบเหล่านี้จะทำงานเป็นส่วนหนึ่งของกระบวนการสร้างตามปกติ และทดสอบการทำงานของตัวแปลภาษาและโมดูลหลักอย่างครอบคลุม นักพัฒนา Perl อาศัยการทดสอบการทำงานเหล่านี้เพื่อให้แน่ใจว่าการเปลี่ยนแปลงตัวแปลภาษาจะไม่ทำให้เกิดข้อผิดพลาดทางซอฟต์แวร์นอกจากนี้ ผู้ใช้ Perl ที่เห็นว่าตัวแปลภาษาผ่านการทดสอบการทำงานบนระบบของตน สามารถมั่นใจได้ว่ามันทำงานได้อย่างถูกต้อง
ท่าเรือ
Perl ได้ รับอนุญาต ภายใต้ ใบ อนุญาตสอง แบบ คือ Artistic License 1.0 [ 4 ] [ 5 ]และGNU General Public License [ 6 ] มีการแจกจ่ายสำหรับระบบปฏิบัติการ ส่วนใหญ่ โดยเฉพาะอย่างยิ่งใน ระบบ Unixและ ระบบ ที่คล้าย Unixแต่ได้รับการพอร์ตไปยังแพลตฟอร์มที่ทันสมัยส่วนใหญ่ (และแพลตฟอร์มที่ล้าสมัยจำนวนมาก) ด้วยข้อยกเว้นเพียงหกประการ Perl สามารถคอมไพล์จากซอร์สโค้ด ได้ บน แพลตฟอร์มที่สอดคล้องกับ POSIXหรือแพลตฟอร์มที่เข้ากันได้กับ Unix ทั้งหมด [ 112 ]
เนื่องจากการเปลี่ยนแปลงที่ผิดปกติที่จำเป็นสำหรับ สภาพแวดล้อม Mac OS แบบคลาสสิกจึงมีการจัดส่งพอร์ตพิเศษที่เรียกว่า MacPerl แยกต่างหาก[ 113 ]
เครือข่ายเก็บถาวร Perl ที่ครอบคลุม (Comprehensive Perl Archive Network)มีรายการแพลตฟอร์มที่รองรับทั้งหมดพร้อมลิงก์ไปยังการแจกจ่ายที่มีอยู่บนแต่ละแพลตฟอร์ม[ 114 ] CPAN ยังเป็นแหล่งที่มาของโมดูล Perl ที่เปิดให้สาธารณะเข้าถึงได้ ซึ่งไม่ได้เป็นส่วนหนึ่งของการแจกจ่าย Perl หลัก
ActivePerl เป็นการแจกจ่ายแบบปิดแหล่งที่มาจากActiveStateซึ่งมีการออกเวอร์ชันใหม่เป็นประจำตามเวอร์ชันหลักของ Perl [ 115 ]ก่อนหน้านี้ การแจกจ่ายนี้รวมถึงตัวจัดการแพ็กเกจ Perl (PPM) [ 116 ]ซึ่งเป็นเครื่องมือยอดนิยมสำหรับการติดตั้ง ลบ อัปเกรด และจัดการการใช้งานโมดูล Perl ทั่วไป อย่างไรก็ตาม เครื่องมือนี้ถูกยกเลิกใน ActivePerl เวอร์ชัน 5.28 [ 117 ]นอกจากนี้ยังรวมถึงPerlScriptซึ่ง เป็นเอ็นจิ้น Windows Script Host (WSH) ที่ใช้ภาษา Perl Visual Perlเป็นเครื่องมือของ ActiveState ที่เพิ่ม Perl ลงในชุดพัฒนาVisual Studio .NETบริษัทนี้ยังได้ผลิตโปรแกรมแปลง VBScript เป็น Perl, คอมไพเลอร์ Perl สำหรับ Windows และโปรแกรมแปลง AWK และ sed เป็น Perl ซึ่งรวมอยู่ในซีดีActiveState สำหรับ Windows ที่ประกอบด้วยระบบปฏิบัติการทั้งหมดของบริษัท รวมถึงKomodo IDE และระบบ ปฏิบัติการทั้งหมด (ยกเว้นตัวแรก) บนระบบ Unix–Linux–POSIX ในปี 2002 และหลังจากนั้น
ผลงาน
เกมการวัดประสิทธิภาพภาษาคอมพิวเตอร์เปรียบเทียบประสิทธิภาพของการใช้งานปัญหาการเขียนโปรแกรมทั่วไปในภาษาการเขียนโปรแกรมหลายภาษา[ 118 ]การใช้งาน Perl ที่ส่งมามักจะมีประสิทธิภาพการใช้หน่วยความจำสูง และให้ผลลัพธ์ความเร็วที่หลากหลาย ประสิทธิภาพของ Perl ในเกมการวัดประสิทธิภาพเป็นไปตามปกติสำหรับภาษาที่ใช้การตีความ[ 119 ]
โปรแกรม Perl ขนาดใหญ่จะเริ่มต้นช้ากว่าโปรแกรมที่คล้ายกันในภาษาคอมไพล์ เนื่องจาก Perl ต้องคอมไพล์ซอร์สโค้ดทุกครั้งที่รัน ในการบรรยายที่การ ประชุม YAPC::Europe 2005และบทความต่อมาเรื่อง "A Timely Start" Jean-Louis Leroy พบว่าโปรแกรม Perl ของเขาใช้เวลานานกว่าที่คาดไว้มาก เนื่องจากตัวแปลภาษา Perl ใช้เวลามากในการค้นหาโมดูลภายในเส้นทาง include ที่ใหญ่เกินไปของเขา[ 120 ]ต่างจาก Java, Python และ Ruby Perl มีเพียงการสนับสนุนการคอมไพล์ล่วงหน้าแบบทดลองเท่านั้น[ 121 ]ดังนั้น โปรแกรม Perl จึงต้องเสียค่าปรับนี้ทุกครั้งที่รัน การทำงานของโปรแกรมทั่วไปใช้เวลานานพอสมควร ทำให้ เวลาเริ่มต้น โดยเฉลี่ยไม่มากนัก แต่เกณฑ์มาตรฐานที่วัดเวลาการทำงานที่สั้นมากมีแนวโน้มที่จะคลาดเคลื่อนเนื่องจากค่าปรับนี้[ 122 ]
มีการนำเครื่องมือหลายอย่างมาใช้เพื่อปรับปรุงสถานการณ์นี้ เครื่องมือแรกคือmod_perl ของ Apache ซึ่งมุ่งแก้ไขสาเหตุที่พบบ่อยที่สุดประการหนึ่งที่ทำให้โปรแกรม Perl ขนาดเล็กถูกเรียกใช้งานอย่างรวดเร็ว นั่นคือการพัฒนาเว็บCGI ActivePerlผ่าน Microsoft ISAPIให้การปรับปรุงประสิทธิภาพที่คล้ายกัน[ 123 ]
เมื่อโค้ด Perl ถูกคอมไพล์แล้ว จะมีโอเวอร์เฮดเพิ่มเติมในระหว่างขั้นตอนการดำเนินการซึ่งโดยทั่วไปจะไม่มีในโปรแกรมที่เขียนด้วยภาษาคอมไพล์ เช่น C หรือ C++ ตัวอย่างของโอเวอร์เฮดดังกล่าว ได้แก่ การตีความ ไบต์โค้ดการจัดการหน่วยความจำแบบนับการอ้างอิง และการตรวจสอบประเภทแบบไดนามิก[ 124 ]
รูทีนที่สำคัญที่สุดสามารถเขียนได้ในภาษาอื่น (เช่นC ) ซึ่งสามารถเชื่อมต่อกับ Perl ผ่านโมดูล Inline แบบง่าย หรือกลไกXS ที่ซับซ้อนกว่าแต่ยืดหยุ่นกว่า [ 125 ]
แอปพลิเคชัน
ภาษา Perl มีการใช้งานที่หลากหลายและมากมาย ซึ่งยิ่งเพิ่มมากขึ้นด้วยโมดูลมาตรฐานและโมดูลจากผู้พัฒนาภายนอกจำนวนมาก
ภาษา Perl ส่วนใหญ่ใช้ในการเขียน สคริปต์ CGI : โครงการขนาดใหญ่ที่เขียนด้วย Perl ได้แก่cPanel , Slash , Bugzilla , RT , TWikiและMovable Type ; เว็บไซต์ที่มีการเข้าชมสูงที่ใช้ Perl อย่างกว้างขวาง ได้แก่Priceline.com , Craigslist , [ 126 ] IMDb , [ 127 ] LiveJournal , DuckDuckGo , [ 128 ] [ 129 ] SlashdotและTicketmasterนอกจากนี้ยังเป็นส่วนประกอบเสริมของเทคโนโลยีLAMP ที่ได้รับความนิยมสำหรับ การพัฒนาเว็บแทนที่PHPหรือPythonภาษา Perl ถูกใช้อย่างกว้างขวางในฐานะภาษาการเขียนโปรแกรมระบบในระบบปฏิบัติการDebian Linux [ 130 ]
Perl มักถูกใช้เป็นภาษาเชื่อมต่อระบบและอินเทอร์เฟซที่ไม่ได้ออกแบบมาให้ทำงานร่วมกันโดยเฉพาะ และสำหรับการ " จัดการข้อมูล " [ 131 ]ซึ่งก็คือการแปลงหรือประมวลผลข้อมูลจำนวนมากสำหรับงานต่างๆ เช่น การสร้างรายงาน จุดแข็งเหล่านี้เชื่อมโยงกันอย่างใกล้ชิด การผสมผสานนี้ทำให้ Perl เป็นภาษาอเนกประสงค์ที่ได้รับความนิยมสำหรับผู้ดูแลระบบโดยเฉพาะอย่างยิ่งเพราะโปรแกรมสั้นๆ ซึ่งมักเรียกว่า " โปรแกรมบรรทัดเดียว " สามารถป้อนและเรียกใช้งานได้ในบรรทัดคำสั่งเดียว
โค้ด Perl สามารถใช้งานได้บนWindowsและ Unix โค้ดดังกล่าวมักใช้โดยผู้จำหน่ายซอฟต์แวร์ (ทั้งซอฟต์แวร์สำเร็จรูปเชิงพาณิชย์ (COTS) และซอฟต์แวร์ที่ออกแบบเอง) เพื่อลดความซับซ้อนในการบรรจุและบำรุงรักษาสคริปต์การสร้างและการติดตั้งซอฟต์แวร์[ 132 ]
Perl/TkและwxPerlเป็นเครื่องมือที่ใช้กันทั่วไปในการเพิ่มส่วนติดต่อผู้ใช้แบบกราฟิกให้กับสคริปต์ Perl
ความสามารถในการจัดการข้อความของ Perl สามารถใช้สำหรับการสร้าง คำสั่ง SQLได้ อาร์เรย์ แฮช และการจัดการหน่วยความจำอัตโนมัติทำให้ง่ายต่อการรวบรวมและประมวลผลข้อมูลที่ส่งคืน ตัวอย่างเช่น ในอินเทอร์เฟซการเขียนโปรแกรมแอปพลิเคชัน (API) ของ Perl DBI ของ Tim Bunce อาร์กิวเมนต์ของ API สามารถเป็นข้อความของคำสั่ง SQL ได้ ดังนั้นจึงเป็นไปได้ที่จะเขียนโปรแกรมในหลายภาษาพร้อมกัน (เช่น สำหรับการสร้างเว็บเพจโดยใช้HTML , JavaScriptและ SQL ในเอกสาร here ) การใช้การแทรกตัวแปรของ Perl เพื่อปรับแต่งคำสั่ง SQL แต่ละคำสั่งโดยใช้โปรแกรม และการระบุอาร์เรย์หรือแฮชของ Perl เป็นโครงสร้างเพื่อเก็บชุดข้อมูล ที่ได้ จากคำสั่ง SQL แต่ละคำสั่งโดยใช้โปรแกรม ช่วยให้มีกลไกระดับสูงสำหรับการจัดการข้อมูลจำนวนมากสำหรับการประมวลผลภายหลังโดยโปรแกรมย่อยของ Perl [ 133 ] ในเวอร์ชันแรกๆ ของ Perl อินเทอร์เฟซฐานข้อมูลถูกสร้างขึ้นโดยการเชื่อมโยงตัวแปลกับไลบรารีฐานข้อมูลฝั่งไคลเอ็นต์เรื่องนี้ค่อนข้างยาก จึงทำได้เฉพาะกับฐานข้อมูลที่สำคัญและใช้งานกันอย่างแพร่หลายเพียงไม่กี่แห่งเท่านั้น และจำกัดให้โปรแกรมที่ทำงานได้ใช้เพียงอินเทอร์เฟซฐานข้อมูลเดียวในแต่ละครั้ง[ 134 ]perl
ใน Perl 5 อินเทอร์เฟซฐานข้อมูลถูกใช้งานโดยโมดูล Perl DBI โมดูล DBI (Database Interface) นำเสนออินเทอร์เฟซเดียวที่ไม่ขึ้นกับฐานข้อมูลให้กับแอปพลิเคชัน Perl ในขณะที่โมดูล DBD (Database Driver) จัดการรายละเอียดของการเข้าถึงฐานข้อมูลที่แตกต่างกันประมาณ 50 ฐานข้อมูล โดยมีไดรเวอร์ DBD สำหรับฐานข้อมูลANSI SQL ส่วนใหญ่ [ 135 ]
DBI ให้การแคชสำหรับแฮนเดิลฐานข้อมูลและการสืบค้น ซึ่งสามารถปรับปรุงประสิทธิภาพได้อย่างมากในสภาพแวดล้อมการดำเนินการที่มีอายุการใช้งานยาวนาน เช่นmod_perl [ 136 ] ช่วยให้ระบบที่มีปริมาณมากหลีกเลี่ยงการโหลดที่พุ่ง สูงขึ้นอย่างในปรากฏการณ์ Slashdot [ 137 ]
ในแอปพลิเคชัน Perl สมัยใหม่ โดยเฉพาะอย่างยิ่งแอปพลิเคชันที่เขียนโดยใช้เฟรมเวิร์กเว็บเช่นCatalystโมดูล DBI มักถูกใช้ทางอ้อมผ่านตัวแมปอ็อบเจ็กต์เชิงสัมพันธ์เช่นDBIx::Class , Class::DBI [ 138 ]หรือ Rose::DB::Object [ 139 ]ซึ่งสร้างคำสั่ง SQL และจัดการข้อมูลอย่างโปร่งใสต่อผู้เขียนแอปพลิเคชัน[ 140 ]
ชุมชน
วัฒนธรรมและชุมชนของ Perl พัฒนาควบคู่ไปกับตัวภาษาเองUsenetเป็นสถานที่สาธารณะแห่งแรกที่มีการแนะนำ Perl แต่ตลอดวิวัฒนาการ ชุมชนของ Perl ได้รับการหล่อหลอมโดยการเติบโตของบริการบนอินเทอร์เน็ตที่กว้างขวางขึ้น รวมถึงการเปิดตัว World Wide Web ชุมชนที่อยู่รอบ Perl นั้นเป็นหัวข้อของการบรรยาย "State of the Onion" ครั้งแรกของ Wall [ 141 ]
State of the Onion คือชื่อที่ใช้เรียกบทสรุป ประจำปีของ Wall เกี่ยวกับความคืบหน้าของ Perl และชุมชนของมัน บทสรุปเหล่านี้มีลักษณะเด่นคืออารมณ์ขันที่เป็นเอกลักษณ์ของเขา โดยมีการอ้างอิงถึงวัฒนธรรมของ Perl วัฒนธรรมแฮกเกอร์ในวงกว้าง ภูมิหลังทางภาษาของ Wall บางครั้งก็เกี่ยวกับชีวิตครอบครัวของเขา และบางครั้งก็รวมถึงภูมิหลังทางศาสนาคริสต์ของเขาด้วย[ 142 ]การบรรยายแต่ละครั้งจะนำเสนอครั้งแรกในงานประชุม Perl ต่างๆ และในที่สุดก็จะได้รับการเผยแพร่ทางออนไลน์ด้วย
ในอีเมล Usenet และกระดานข้อความ โปรแกรม "Just another Perl hacker" (JAPH) เป็นที่นิยม โดยมีต้นกำเนิดมาจากRandal L. Schwartzหนึ่งในผู้ฝึกสอน Perl มืออาชีพคนแรกๆ[ 143 ]ในภาษาของวัฒนธรรม Perl โปรแกรมเมอร์ Perl จะถูกเรียกว่า Perl hacker และจากนี้จึงเกิดการเขียนโปรแกรมสั้นๆ เพื่อพิมพ์วลี "Just another Perl hacker, [ sic ]" ออกมา ตามแนวคิดดั้งเดิม โปรแกรมเหล่านี้จะถูกปกปิดไว้พอสมควรและสั้นพอที่จะใส่ลงในลายเซ็นของอีเมลหรือข้อความ Usenet ได้ JAPH "แบบฉบับ" ที่พัฒนาโดย Schwartz จะมีเครื่องหมายจุลภาคอยู่ท้ายสุด แม้ว่ามักจะถูกละเว้นก็ตาม[ 144 ]
"กอล์ฟ" ในภาษา Perl คือกิจกรรมยามว่างที่มุ่งลดจำนวนอักขระ (การกดแป้นพิมพ์) ที่ใช้ในโปรแกรม Perl ให้น้อยที่สุดเท่าที่จะเป็นไปได้ คล้ายกับที่ นัก กอล์ฟพยายามตีให้น้อยที่สุดในแต่ละรอบ การใช้คำนี้ครั้งแรก[ 145 ]เน้นย้ำถึงความแตกต่างระหว่างโค้ดธรรมดาที่ออกแบบมาเพื่อสอนผู้เริ่มต้นและโค้ดสั้นๆ ที่น่าจะทำให้โปรแกรมเมอร์ Perl ที่มีประสบการณ์สนุกสนาน ตัวอย่างของโค้ดแบบหลังคือ JAPH ที่ถูกนำไปใช้ในลายเซ็นในการโพสต์ Usenet และที่อื่นๆ กิจกรรมคล้ายๆ กันนี้เคยเป็นกิจกรรมยามว่างที่ไม่มีชื่อในภาษาAPLในทศวรรษก่อนๆ การใช้ Perl ในการเขียนโปรแกรมที่ทำการ เข้ารหัส RSAทำให้เกิดความสนใจอย่างกว้างขวางและเป็นประโยชน์ในกิจกรรมยามว่างนี้[ 146 ]ในปีต่อๆ มา คำว่า " โค้ดกอล์ฟ " ได้ถูกนำไปใช้กับกิจกรรมยามว่างในภาษาอื่นๆ[ 147 ]มีการจัดงาน Perl Golf Apocalypse ขึ้นที่งาน Perl Conference 4.0 ในเมืองมอนเทอเรย์ รัฐแคลิฟอร์เนีย ในเดือนกรกฎาคม ปี 2000
เช่นเดียวกับภาษา C การแข่งขัน เขียนโค้ดที่ซับซ้อนเป็นกิจกรรมที่ได้รับความนิยมในช่วงปลายทศวรรษ 1990 การแข่งขัน Obfuscated Perl ContestจัดโดยThe Perl Journalตั้งแต่ปี 1996 ถึง 2000 ซึ่งเน้นย้ำถึงความยืดหยุ่นทางไวยากรณ์ของ Perl มีการมอบรางวัลในหมวดหมู่ต่างๆ เช่น "โปรแกรมที่มีประสิทธิภาพที่สุด" ซึ่งใช้พื้นที่ได้อย่างมีประสิทธิภาพ และ "ลายเซ็นสี่บรรทัดที่ดีที่สุด" สำหรับโปรแกรมที่พอดีกับสี่บรรทัดที่มีอักขระ 76 ตัวในรูปแบบของบล็อกลายเซ็น Usenet [ 148 ]
บทกวี Perl คือการเขียนบทกวีที่สามารถคอมไพล์เป็นโค้ด Perl ที่ถูกต้องตามกฎหมายได้ ตัวอย่างเช่น ผลงานที่รู้จักกันในชื่อ " Black Perl " บทกวี Perl เกิดขึ้นได้เนื่องจากมีคำศัพท์ภาษาอังกฤษจำนวนมากที่ใช้ในภาษา Perl มีการส่งบทกวีใหม่ๆ ให้กับชุมชน PerlMonks เป็นประจำ[ 149 ]
การประชุม Perl อีกครั้งหนึ่ง
Yet Another Perl Conference [ 150 ] : 754 [ 151 ] : 14 (เรียกอีกอย่างว่าYAPC ) ตั้งแต่ปี 2016–2019 เรียกว่าThe Perl Conference ( TPC ) และตั้งแต่ปี 2020 เป็นต้นไปเรียกว่าThe Perl and Raku Conferenceเป็นชุดการประชุมที่พูดคุยเกี่ยวกับภาษาโปรแกรมPerl ซึ่งจัดมาตั้งแต่ปี 1999 โดยปกติจะจัดภายใต้การอุปถัมภ์ของThe Perl FoundationและYet Another Societyซึ่งเป็น "องค์กรไม่แสวงหาผลกำไรเพื่อส่งเสริมความร่วมมือในด้านวิทยาการคอมพิวเตอร์และสารสนเทศ"
ประวัติศาสตร์
การประชุม YAPC ครั้งแรกจัดขึ้นที่มหาวิทยาลัยคาร์เนกีเมลลอนในเมืองพิตต์สเบิร์ก รัฐเพนซิลเวเนียสหรัฐอเมริกา ในวันที่ 24 และ 25 มิถุนายน พ.ศ. 2542 [ 150 ]โดยมีเควิน เลนโซเป็น ผู้จัดงาน [ 152 ]จุดเริ่มต้นของ YAPC มาจากกลุ่มผู้ใช้ Perl Mongers ที่ไม่แสวงหาผลกำไร[ 153 ] [ 154 ]การประชุมครั้งแรกได้รวบรวมวิทยากร 31 ท่านที่แตกต่างกันไว้ในกำหนดการในหัวข้อต่างๆ ที่เกี่ยวข้องกับ Perl
แนวคิดเกี่ยวกับการประชุม Perl ราคาประหยัดแพร่กระจายอย่างรวดเร็ว การประชุม YAPC เวอร์ชัน ยุโรป ครั้งแรก จัดขึ้นโดยสมาชิกของ Perl Mongers ในลอนดอนในปี 2000 [ 155 ]อิสราเอลในปี 2003 [ 154 ]ออสเตรเลียในปี 2004 เอเชียและบราซิลในปี 2005 และรัสเซียในปี 2008 ทวีปเดียวที่ไม่เคยเป็นเจ้าภาพจัดการประชุม YAPC คือ แอฟริกาและแอนตาร์กติกา
ในปี 2016 YAPC ได้เปลี่ยนชื่อเป็น The Perl Conference [ 156 ] : 757 ซึ่งเป็นชื่อเดิมของO'Reilly Open Source Convention (OSCON) ณ ปี 2020 ปัจจุบันได้เปลี่ยนชื่อเป็น The Perl and Raku Conference เพื่อสะท้อนถึงการเปลี่ยนชื่อ Perl 6 เป็น Raku
แผนกต้อนรับ
ในปี 2002 พจนานุกรมสำหรับนักพัฒนา Perlระบุว่า YAPC เป็นการประชุมที่สำคัญที่สุดเป็นอันดับสองในวงการ Perl รองจากการประชุม Open Source Conference ของO'Reilly [ 11 ] Minimal Perlอธิบาย YAPC ว่าเป็น "งานประชุมระดับรากหญ้าราคาประหยัดที่จัดขึ้นทั่วโลกเพื่อประโยชน์ของผู้ที่ไม่สามารถจ่ายค่าใช้จ่ายในการเข้าร่วมการประชุมที่จัดอย่างหรูหราได้ หรือเพียงแค่ต้องการอยู่ร่วมกับนักเรียนและผู้เชี่ยวชาญด้านเทคโนโลยีมากกว่าฝ่ายไอทีขององค์กร" [ 157 ]การประชุมนี้ได้รับการแนะนำในหนังสือต่างๆ เกี่ยวกับการเขียนโปรแกรม Perl ในช่วงปี 2000 [ 158 ]
นิตยสาร Linuxของเนเธอร์แลนด์ได้รีวิวการประชุม YAPC ครั้งที่สองของยุโรป ซึ่งจัดขึ้นที่อัมสเตอร์ดัมในปี 2544 และบรรยายถึงความตกใจเมื่อผู้จัดงานเปิดเผยว่าพวกเขาได้ดักฟังการรับส่งข้อมูลเครือข่ายและพบว่าผู้เข้าร่วมหลายคนใช้รหัสผ่านที่ไม่ได้เข้ารหัส แม้ว่าหัวข้อหลักของการประชุมจะเป็นเรื่องความปลอดภัยก็ตาม[ 159 ]หัวข้ออื่นๆ ในปีนั้นรวมถึงการสร้างอินเทอร์เฟซผู้ใช้ การใช้ Perl สำหรับการพูด และการเขียนโปรแกรมแบบขนาน และการประชุมมีสามช่วงการประชุมแบบขนานโดยมีผู้เข้าร่วมประมาณ 250 คน
ชื่อนี้เป็นการให้เกียรติแก่yaccซึ่งย่อมาจาก " Yet Another Compiler Compiler" (คอมไพเลอร์อีกตัวหนึ่ง)
สถานที่ตั้ง
อเมริกาเหนือ
- 1999: พิตต์สเบิร์ก เพนซิลเวเนีย สหรัฐอเมริกา (24-25 มิถุนายน 2542) YAPC::NA 1999
- 2000: พิตต์สเบิร์ก เพนซิลเวเนีย สหรัฐอเมริกา (21-23 มิถุนายน 2543) YAPC::NA 19100
- 2001: มอนทรีออล, ควิเบก, แคนาดา (13-15 มิถุนายน 2001) YAPC::NA 2001 เก็บถาวรเมื่อ 2016-03-09 ที่Wayback Machine
- 2002: เซนต์หลุยส์ รัฐมิสซูรี สหรัฐอเมริกา (26 มิถุนายน – 28 มิถุนายน 2002) YAPC::NA 2002 เก็บถาวรเมื่อ 2016-03-03 ที่Wayback Machine
- 2003: แคนาดา: ออตตาวา, ออนแทรีโอ, แคนาดา (15-16 พฤษภาคม 2003) (จัดในชื่อ YAPC::Canada) YAPC::Canada
- 2003: อเมริกา: โบคา ราตัน, ฟลอริดา, สหรัฐอเมริกา (16-18 มิถุนายน 2003) YAPC::NA 2003 เก็บถาวรเมื่อ 2016-03-03 ที่Wayback Machine
- 2004: บัฟฟาโล, นิวยอร์ก, สหรัฐอเมริกา (16-18 มิถุนายน 2004) YAPC::NA 2004 เก็บถาวรเมื่อ 2015-08-09 ที่Wayback Machine
- 2005: โทรอนโต รัฐออนแทรีโอ ประเทศแคนาดา (27-29 มิถุนายน 2005) YAPC::NA 2005 เก็บถาวรเมื่อ 2015-08-09 ที่Wayback Machine
- 2549: ชิคาโก อิลลินอยส์ สหรัฐอเมริกา (26-30 มิถุนายน 2549) 2549) YAPC::NA 2549
- 2550: ฮูสตัน เท็กซัส สหรัฐอเมริกา (25–27 มิถุนายน 2550) YAPC::NA 2550
- 2551: ชิคาโก อิลลินอยส์ สหรัฐอเมริกา (16-18 มิถุนายน 2551) YAPC::NA 2551
- 2552: พิตต์สเบิร์ก เพนซิลเวเนีย สหรัฐอเมริกา (22-24 มิถุนายน 2552) YAPC::NA 2552
- 2010: โคลัมบัส โอไฮโอ สหรัฐอเมริกา (21-23 มิถุนายน 2553) YAPC::NA 2010
- 2011: แอชวิลล์ นอร์ธแคโรไลนา สหรัฐอเมริกา (27–30 มิถุนายน 2554) YAPC::NA 2011
- 2012: แมดิสัน รัฐวิสคอนซิน สหรัฐอเมริกา (13-15 มิถุนายน 2012) YAPC::NA 2012 เก็บถาวรเมื่อวันที่ 5 กันยายน 2015 ที่Wayback Machine
- 2013: ออสติน เท็กซัส สหรัฐอเมริกา (3-5 มิถุนายน 2556) YAPC::NA 2013
- 2014: ออร์แลนโด ฟลอริดา สหรัฐอเมริกา (23-25 มิถุนายน 2557) YAPC::NA 2014
- 2015: ซอลต์เลกซิตี้ ยูทาห์ สหรัฐอเมริกา (8–10 มิถุนายน 2558) YAPC::NA 2015
- 2016: ออร์แลนโด ฟลอริดา สหรัฐอเมริกา (20-22 มิถุนายน 2559) YAPC::NA 2016
- 2017: อเล็กซานเดรีย รัฐเวอร์จิเนีย สหรัฐอเมริกา (18-23 มิถุนายน 2017) การประชุม Perl ในวอชิงตัน ดี.ซี.
- 2018: ซอลต์เลคซิตี้ รัฐยูทาห์ สหรัฐอเมริกา (17-22 มิถุนายน 2018) การประชุม Perl ในซอลต์เลคซิตี้
- 2019: พิตต์สเบิร์ก รัฐเพนซิลเวเนีย สหรัฐอเมริกา (16-21 มิถุนายน 2019) การประชุม Perl ในพิตต์สเบิร์ก
- ปี 2020: จัดออนไลน์ (เนื่องจากสถานการณ์ COVID-19 ) (วันพุธที่ 24 ถึงวันศุกร์ที่ 26 พฤษภาคม 2020) การประชุม Perl และ Raku 'Conference in the Cloud'
- แทนที่งานTPCiH 2020 ที่ฮิวสตันซึ่งเก็บถาวรไว้เมื่อ วันที่ 29 มกราคม 2020 ในWayback Machineวันอังคาร กำหนดจัดขึ้นระหว่างวันที่ 23 มิถุนายน ถึง วันเสาร์ที่ 27 มิถุนายน
- การประชุมในระบบคลาวด์ประจำปี 2021 (8-10 มิถุนายน 2021) การประชุม Perl และ Raku ในระบบคลาวด์
- 2022: ฮิวสตัน รัฐเท็กซัส (22-24 มิถุนายน 2022) TPCiH 2022 ฮิวสตัน
- 2023: โทรอนโต ประเทศแคนาดา (11-13 กรกฎาคม 2023) การประชุม Perl และ Raku ในโทรอนโต
- 2024: ลาสเวกัส, เนวาดา (24-28 มิถุนายน 2024) TPRC ลาสเวกัส, เนวาดาเก็บถาวรเมื่อวันที่ 14 ธันวาคม 2025 ที่Wayback Machine
- 2025: กรีนวิลล์ รัฐเซาท์แคโรไลนา (27-29 มิถุนายน 2025) TPRC กรีนวิลล์ รัฐเซาท์แคโรไลนา
ยุโรป
- 2000: ลอนดอน ประเทศอังกฤษ (22-24 กันยายน 2000) YAPC::EU 2000
- 2001: อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์ (2–4 สิงหาคม 2001) YAPC::EU 2001 [ 159 ]
- 2002: มิวนิก ประเทศเยอรมนี (18-20 กันยายน 2002) YAPC::EU 2002
- 2003: ปารีส ฝรั่งเศส (23-25 กรกฎาคม 2546) YAPC::EU 2003
- 2004: เบลฟาสต์ ไอร์แลนด์เหนือ (15-17 กันยายน 2004) YAPC::EU 2004
- 2005: บรากา ประเทศโปรตุเกส (31 สิงหาคม – 2 กันยายน 2005) YAPC::EU 2005 Perl Everywhere
- 2006: เบอร์มิงแฮม ประเทศอังกฤษ (30 สิงหาคม – 1 กันยายน 2006) YAPC::EU 2006
- 2007: เวียนนา ประเทศออสเตรีย (28-30 สิงหาคม 2550) YAPC::EU 2007 Social Perl
- 2008: โคเปนเฮเกน ประเทศเดนมาร์ก (13-15 สิงหาคม 2551) YAPC::EU 2008 Beautiful Perl
- 2009: ลิสบอน ประเทศโปรตุเกส (3-5 สิงหาคม 2552) YAPC::EU 2009 Corporate Perl
- 2010: ปิซา ประเทศอิตาลี (4-6 สิงหาคม 2010) YAPC::EU 2010 การฟื้นฟูภาษา Perl
- 2011: ริกา ประเทศลัตเวีย (15-17 สิงหาคม 2011) YAPC::EU 2011 Modern Perlเก็บถาวรเมื่อ 31 กรกฎาคม 2011 ที่Wayback Machine
- 2012: แฟรงก์เฟิร์ต ประเทศเยอรมนี (20–22 สิงหาคม 2012) YAPC::EU 2012 [ 160 ]
- 2013: เคียฟ ประเทศยูเครน (12-14 สิงหาคม 2013) YAPC::EU 2013 Future Perl
- 2014: โซเฟีย ประเทศบัลแกเรีย (22-24 สิงหาคม 2014) YAPC::EU 2014
- 2015: กรานาดา สเปน (2-4 กันยายน 2015) YAPC::EU 2015 ศิลปะและวิศวกรรม
- 2016: คลูช-นาโปกา โรมาเนีย (24-26 สิงหาคม 2559) YAPC::ยุโรป 2016
- 2017: อัมสเตอร์ดัม ประเทศเนเธอร์แลนด์ (9-11 สิงหาคม 2017) การประชุม Perl ในอัมสเตอร์ดัม
- 2018: กลาสโกว์ (13-17 สิงหาคม 2018) การประชุม Perl ในกลาสโกว์
- 2019: ริกา (7-9 สิงหาคม 2019) PerlCon
- 2020: อัมสเตอร์ดัม (10–14 สิงหาคม 2020) งาน Perl & Raku Con ในอัมสเตอร์ดัมถูกเก็บถาวรเมื่อวันที่ 5 ธันวาคม 2025 ในWayback Machine – ถูกยกเลิกเนื่องจากการระบาดของไวรัสโคโรนา
- 2023: เฮลซิงกิ (14–18 สิงหาคม 2023) การประชุม Perl & Koha ในเฮลซิงกิ
อิสราเอล
- 2003: ไฮฟา (11 พฤษภาคม 2003) YAPC::อิสราเอล::2003
- 2004: เฮอร์ซลิยา (26 กุมภาพันธ์ 2547) YAPC::อิสราเอล::2004
- 2548: เฮอร์ซลิยา (17 กุมภาพันธ์ 2548) YAPC::อิสราเอล::2005
- 2006: เนทันยาในปี 2006 YAPC::Israel เปลี่ยนชื่อเป็นOSDC ::Israel OSDC::Israel 2006
รัสเซียและยูเครน
- 2008: มอสโก ประเทศรัสเซีย (17-18 พฤษภาคม 2008) YAPC::Russia 2008 May Perl Archived 2015-09-25 at the Wayback Machine
- 2009: มอสโก ประเทศรัสเซีย (16-17 พฤษภาคม 2009) YAPC::Russia 2009 May Perl 2
- 2010: เคียฟ ประเทศยูเครน (12-14 มิถุนายน 2010) YAPC::Russia 2010 May Perl + Perl Movaเก็บถาวรเมื่อ 2010-10-22 ที่Wayback Machine
- 2011: มอสโก ประเทศรัสเซีย (14-15 พฤษภาคม 2011) YAPC::Russia 2011 May Perl + Perl Mova
- 2012: เคียฟ ประเทศยูเครน (12-13 พฤษภาคม 2012) YAPC::Russia May Perl
- ไม่มีการจัดกิจกรรมใดๆ ในปี 2013 เนื่องจากมีการจัด YAPC::Europe 2013 ที่เคียฟ
- 2014: เซนต์ปีเตอร์สเบิร์ก ประเทศรัสเซีย (13-14 มิถุนายน 2014) YAPC::Russia 2014
- 2015: มอสโก ประเทศรัสเซีย (16-17 พฤษภาคม 2015) YAPC::Russia 2015
- 2017: มอสโก ประเทศรัสเซีย (4 พฤศจิกายน 2016) YAPC::Russia 2017
ออสเตรเลีย
- การประชุม YAPC::Australia ครั้งแรกจัดขึ้นเป็นส่วนหนึ่งของการประชุม OSDC ปี 2004 ที่เมืองเมลเบิร์นระหว่างวันที่ 1-5 ธันวาคม 2004 และหลังจากนั้นก็จัดร่วมกันมาโดยตลอด
อเมริกาใต้
กิจกรรมเหล่านี้จัดขึ้นร่วมกับ CONISLI
- 2549: ปอร์ตูอาเลเกร / อาร์เอส (19–22 เมษายน 2549) YAPC::SA::2006
- 2550: ปอร์ตูอาเลเกร/อาร์เอส (11–14 เมษายน พ.ศ. 2550) YAPC::SA::2007
- 2008: ปอร์ตูอาเลเกร/อาร์เอส (17–19 เมษายน 2551) YAPC::SA::2008
- 2009: ปอร์ตูอาเลเกร/อาร์เอส (24–27 มิถุนายน 2552) YAPC::SA::2009
บราซิล
- 2005: ปอร์ตูอาเลเกร/อาร์เอส (1-5 มิถุนายน 2548) YAPC::บราซิล 2005
- 2006: São Paulo /SP, บราซิล (3-5 พฤศจิกายน 2549) YAPC::Brasil 2006 Archived 2006-11-16 ที่Wayback Machine
- 2550: เซาเปาโล/SP บราซิล (9–11 พฤศจิกายน 2550) YAPC::Brasil 2550
- 2008: เซาเปาโล/SP, บราซิล (18–19 ตุลาคม 2008) YAPC::Brasil 2008
- 2009: Niterói /RJ, บราซิล (30 ตุลาคม – 1 พฤศจิกายน 2009) YAPC::Brasil 2009
- 2010: Fortaleza /CE, บราซิล (25-31 ตุลาคม 2010) YAPC::Brasil 2010 Perl: Solução e Integração de Negócios
- 2011: รีโอเดจาเนโร /RJ, บราซิล (4-6 พฤศจิกายน 2554) YAPC::Brasil 2011
- 2012: เซาเปาโล/SP, บราซิล (19–20 ตุลาคม 2012) YAPC::Brasil 2012 A revolução dos dados
- 2013: Curitiba /PR, บราซิล (15-16 พฤศจิกายน 2013) YAPC::Brasil 2013 Universo Científico และ Perl Hacking
- 2014: Itapema /SC, บราซิล (19-20 กันยายน 2014) YAPC::Brasil 2014 Soluções Tecnológicas para Gestão Pública
- 2015: Taubaté /SP, บราซิล (18-20 กันยายน 2558) YAPC::Brasil 2015 Perl Community และ CPAN
เอเชีย
- 2004: ไทเป , ไต้หวัน (27-28 มีนาคม 2547) YAPC::2004::Taipei เก็บถาวรเมื่อ 2015-09-24 ที่Wayback Machine
- 2005: ไทเป ไต้หวัน (26-27 มีนาคม 2005) (จัดอยู่ในชื่อ YAPC::Taipei) YAPC::2005::Taipei เก็บถาวรเมื่อ 2015-09-24 ที่Wayback Machine
- 2006: โตเกียว ประเทศญี่ปุ่น (29-30 มีนาคม 2549) YAPC::Asia 2006
- 2007: โตเกียว ประเทศญี่ปุ่น (4-5 เมษายน 2550) YAPC::Asia 2007
- 2008: โตเกียว ประเทศญี่ปุ่น (15-16 พฤษภาคม 2551) YAPC::Asia 2008
- 2009: โตเกียว ประเทศญี่ปุ่น (10-11 กันยายน 2009) YAPC::Asia 2009
- 2010: โตเกียว ประเทศญี่ปุ่น (15-16 ตุลาคม 2010) YAPC::Asia 2010
- 2011: โตเกียว ประเทศญี่ปุ่น (14-15 ตุลาคม 2011) YAPC::Asia 2011
- 2012: โตเกียว ประเทศญี่ปุ่น (27-29 กันยายน 2012) YAPC::Asia 2012
- 2013: โตเกียว ประเทศญี่ปุ่น (19-21 กันยายน 2013) YAPC::Asia 2013
- 2014: โตเกียว ประเทศญี่ปุ่น (28-30 สิงหาคม 2014) YAPC::Asia 2014
- 2015: โตเกียว ประเทศญี่ปุ่น (20-22 สิงหาคม 2558) YAPC::Asia 2015
- 2016: ฮอกไกโด ประเทศญี่ปุ่น (9–10 ธันวาคม 2016) YAPC::Hokkaido
- 2017: คันไซ (3–4 มีนาคม 2017) YAPC::Kansai 2017
- YAPC:: Fukuoka 2017 (30 มิถุนายน – 1 กรกฎาคม) ณ เมือง ฟุกุโอกะ
- 2018: โอกินาวา (2–3 มีนาคม 2018) YAPC::Okinawa 2018
- 2019: โตเกียว ประเทศญี่ปุ่น (25–26 มกราคม 2019) YAPC::Tokyo 2019
- 2020: เกียวโต ประเทศญี่ปุ่น (27-28 มีนาคม 2020) YAPC::Kyoto 2020
- 2021: ออนไลน์, YAPC::Japan (18–19 กุมภาพันธ์ 2021) YAPC::Japan 2021
- YAPC ::Japan 2022: ออนไลน์ (4-5 มีนาคม 2022)
- 2022: เกียวโต ประเทศญี่ปุ่น (19 มีนาคม 2023) YAPC::เกียวโต 2023
- 2024: ฮิโรชิม่า ประเทศญี่ปุ่น (10 กุมภาพันธ์ 2024) YAPC::ฮิโรชิม่า 2024
- 2024: ฮาโกดาเตะ ประเทศญี่ปุ่น (5 ตุลาคม 2024) YAPC::ฮาโกดาเตะ 2024
- 2025: ฟุกุโอกะ ประเทศญี่ปุ่น (14-15 พฤศจิกายน 2568) YAPC::ฟุกุโอกะ 2025
ดูเพิ่มเติม
- รายชื่อหนังสือเกี่ยวกับการเขียนโปรแกรมภาษา Perl
- รายชื่อซอฟต์แวร์และเครื่องมือ Perl
- โครงร่างของภาษา Perl
- ภาษาข้อมูล Perl
- สภาพแวดล้อมของอ็อบเจ็กต์ Perl
- เอกสารธรรมดาๆ
อ่านเพิ่มเติม
- หนังสือเรียนภาษา Perlฉบับที่ 6 (2011) สำนักพิมพ์ O'Reilly เป็นหนังสือแนะนำภาษา Perl สำหรับผู้เริ่มต้น
- หนังสือ Beginning Perlฉบับพิมพ์ครั้งที่ 1 (2012) สำนักพิมพ์ Wrox เป็นคู่มือสำหรับผู้ที่เพิ่งเริ่มต้นเรียนรู้การเขียนโปรแกรม หรือเพิ่งเริ่มใช้ Perl
- บทความเรื่อง "Modern Perl" ถูกเก็บถาวรไว้เมื่อวันที่ 22 ธันวาคม 2011 ในWayback Machineฉบับพิมพ์ครั้งที่ 2 (2012) โดย Onyx Neon บทความนี้อธิบายถึงเทคนิคการเขียนโปรแกรมด้วยภาษา Perl สมัยใหม่
- หนังสือ Programming Perlฉบับที่ 4 (2012) สำนักพิมพ์ O'Reilly เป็นหนังสืออ้างอิงภาษา Perl ที่ครบถ้วนสมบูรณ์ที่สุด
- หนังสือ Effective Perl Programmingฉบับที่ 2 (2010) สำนักพิมพ์ Addison-Wesley คู่มือระดับกลางถึงขั้นสูงสำหรับการเขียนโปรแกรม Perl ตามแบบฉบับดั้งเดิม
- ตำราอาหาร Perl , ISBN 0-596-00313-7ตัวอย่างการเขียนโปรแกรม Perl ในทางปฏิบัติ
- Dominus, Mark Jason (2005). ภาษา Perl ระดับสูง . Morgan Kaufmann. ISBN 978-1-55860-701-9.เทคนิคการเขียนโปรแกรมเชิงฟังก์ชันในภาษา Perl
ลิงก์ภายนอก
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ เพิร์ล
Perl เป็น ภาษาโปรแกรมแบบไดนามิก ที่ ตีความได้ และ มีระดับสูง สำหรับ วัตถุประสงค์ทั่วไป แม้ว่า Perl จะไม่ใช่คำย่ออย่างเป็นทางการ [ 8 ] แต่ ก็มีการใช้ คำย่อแบบย้อนกลับ ต่างๆ รวมถึง...
ชื่อและโลโก้
เดิมที Perl มีชื่อว่า "Pearl" Wall ต้องการตั้งชื่อภาษาให้สั้นและมีความหมายเชิงบวก [ 23 ] อย่างไรก็ตาม Wall ค้นพบ ภาษา PEARL ที่มีอยู่ ก่อนการเปิดตัว Perl อย่างเป็นทางการ และตัดตัวอักษร "a" ออกจากชื่อ [ 24 ]
เวอร์ชันแรกๆ
Larry Wall เริ่มพัฒนา Perl ในปี 1987 ขณะทำงานเป็นโปรแกรมเมอร์ที่ Unisys [ 14 ] เขาปล่อยเวอร์ชัน 1.0 ในวันที่ 18 ธันวาคม 1987 [ 1 ] Wall ได้นำวิธีการบางอย่างจากภาษาที่มีอยู่ซึ่งใช้สำหรับการจัดการข้อความมาใช้กับ Perl ใน ช่วงแรก
ทศวรรษ 1990
เดิมที เอกสารประกอบการใช้งาน Perl มีเพียง หน้าคู่มือ (man page ) ยาวๆ หน้าเดียวเท่านั้น ในปี 1991 หนังสือ Programming Perl ซึ่งโปรแกรมเมอร์ Perl หลายคนรู้จักในชื่อ "Camel Book" เพราะปกหนังสือ ได้ถูกตีพิมพ์และกลายเป็น หนังสืออ้างอิง มาตรฐาน สำหรับภาษา Perl [...
