ภาษาอังกฤษอาหารฝรั่งเศสสเปน

ไอคอน Fav ของ OnWorks

perl5200delta - ออนไลน์ใน Cloud

เรียกใช้ perl5200delta ในผู้ให้บริการโฮสต์ฟรีของ OnWorks ผ่าน Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

นี่คือคำสั่ง perl5200delta ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS

โครงการ:

ชื่อ


perl5200delta - มีอะไรใหม่สำหรับ perl v5.20.0

DESCRIPTION


เอกสารนี้อธิบายความแตกต่างระหว่างรุ่น 5.18.0 และรุ่น 5.20.0

หากคุณกำลังอัพเกรดจากรุ่นก่อนหน้าเช่น 5.16.0 ให้อ่าน perl5180delta ก่อน
ซึ่งอธิบายความแตกต่างระหว่าง 5.16.0 และ 5.18.0

แกน การเพิ่มประสิทธิภาพ


การทดลอง รูทีนย่อย ลายเซ็น
ไวยากรณ์การประกาศเพื่อแกะรายการอาร์กิวเมนต์ลงในตัวแปรคำศัพท์ "ซับฟู ($a,$b)
{...}" ตรวจสอบจำนวนอาร์กิวเมนต์และใส่อาร์กิวเมนต์ลงในตัวแปรคำศัพท์
ลายเซ็นไม่เทียบเท่ากับสำนวนที่มีอยู่ของ "sub foo { my($a,$b) = @_; ... }"
ลายเซ็นใช้ได้เฉพาะเมื่อเปิดใช้งานคุณสมบัติที่ไม่ใช่ค่าเริ่มต้น และสร้างคำเตือน
เกี่ยวกับการถูกทดลอง การปะทะทางวากยสัมพันธ์กับต้นแบบนั้นจัดการโดยปิดการใช้งาน
ไวยากรณ์ต้นแบบสั้น ๆ เมื่อเปิดใช้งานลายเซ็น

ดู "ลายเซ็น" ใน perlsub สำหรับรายละเอียด

"ย่อย" s ตอนนี้ เอา a "ต้นแบบ" คุณลักษณะ
เมื่อประกาศหรือกำหนด "ย่อย" ตอนนี้สามารถระบุต้นแบบภายใน a
แอตทริบิวต์ "prototype" แทนที่จะเป็น parens ตามชื่อ

ตัวอย่างเช่น "sub foo($$){}" สามารถเขียนใหม่เป็น "sub foo : prototype($$){}"

เพิ่มเติม คงเส้นคงวา ต้นแบบ การแยกวิเคราะห์
อัฒภาคหลายตัวในต้นแบบรูทีนย่อยได้รับการยอมรับและถือเป็น
อัฒภาคเดียว มีกรณีหนึ่งที่สิ่งนี้ไม่ได้เกิดขึ้น รูทีนย่อยที่
ต้นแบบที่ขึ้นต้นด้วย "*" หรือ ";*" อาจส่งผลต่อการพิจารณาว่าคำเปล่าเป็นเมธอดหรือไม่
ชื่อหรือโทรย่อย ตอนนี้ใช้กับ ";;;*" ด้วย

อนุญาตให้เว้นวรรคในรูทีนย่อยต้นแบบมานานแล้ว ดังนั้น "sub( $ $ )" is
เทียบเท่ากับ "sub($$)" แต่จนถึงตอนนี้มันถูกถอดออกเมื่อรูทีนย่อยถูกแยกวิเคราะห์
ดังนั้นช่องว่างคือ ไม่ อนุญาตในต้นแบบที่กำหนดโดย "Scalar::Util::set_prototype" ตอนนี้
ได้รับอนุญาต และ parser จะไม่ตัดช่องว่างอีกต่อไป แปลว่า "ต้นแบบ
&mysub" ส่งคืนต้นแบบดั้งเดิม ช่องว่าง และทั้งหมด

"แรนด์" ตอนนี้ ใช้ a คงเส้นคงวา สุ่ม จำนวน เครื่องกำเนิดไฟฟ้า
ก่อนหน้านี้ Perl จะใช้ตัวสร้างตัวเลขสุ่มเฉพาะแพลตฟอร์ม ซึ่งแตกต่างกันระหว่าง
libc แรนด์(), สุ่ม () or แดรนด์48().

ซึ่งหมายความว่าคุณภาพของหมายเลขสุ่มของ Perl จะแตกต่างกันไปในแต่ละแพลตฟอร์ม
จาก 15 บิตของ แรนด์() บน Windows เป็น 48 บิตบนแพลตฟอร์ม POSIX เช่น Linux ด้วย
แดรนด์48().

Perl ตอนนี้ใช้ internal . ของตัวเองแล้ว แดรนด์48() การใช้งานบนทุกแพลตฟอร์ม นี้ไม่ได้
ทำให้ "แรนด์" ของ Perl มีความปลอดภัยในการเข้ารหัส [เพิร์ล #115928]

ใหม่ ฝาน วากยสัมพันธ์
ไวยากรณ์ %hash{...} และ %array[...] ใหม่จะคืนค่ารายการคีย์/ค่า (หรือดัชนี/ค่า)
คู่ ดู "คีย์/ค่าแฮชสไลซ์" ใน perldata

การทดลอง postfix การอ้างอิง
เมื่อคุณลักษณะ "หลังเดเรฟ" มีผล จะมีการตั้งค่าความสมมูลทางวากยสัมพันธ์ต่อไปนี้
ขึ้น:

$sref->$*; # เหมือนกับ ${ $sref } # interpolates
$aref->@*; # เหมือนกับ @{ $aref } # interpolates
$href->%*; # เหมือนกับ %{ $href }
$cref->&*; # เช่นเดียวกับ &{ $cref }
$gref->**; # เหมือนกับ *{ $gref }

$aref->$#*; # เช่นเดียวกับ $#{ $aref }

$gref->*{ $สล็อต }; # เหมือนกับ *{ $gref }{ $slot }

$aref->@[ ... ]; # เหมือนกับ @$aref[ ... ] # interpolates
$href->@{ ... }; # เหมือนกับ @$href{ ... } # interpolates
$aref->%[ ... ]; # เหมือนกับ %$aref[ ... ]
$href->%{ ... }; # เหมือนกับ %$href{ ... }

สิ่งเหล่านั้นที่ทำเครื่องหมายเป็นการสอดแทรกสอดแทรกก็ต่อเมื่อคุณลักษณะ "postderef_qq" ที่เกี่ยวข้องคือ
ยังเปิดใช้งาน คุณลักษณะนี้คือ การทดลอง และจะเรียก
คำเตือนประเภท "experimental::postderef" เมื่อใช้ เว้นแต่จะถูกระงับ

สำหรับข้อมูลเพิ่มเติม โปรดดูส่วนไวยากรณ์ Postfix Dereference Syntax ของ perlref

Unicode 6.3 ตอนนี้ ได้รับการสนับสนุน
ตอนนี้ Perl รองรับและมาพร้อมกับ Unicode 6.3 แล้ว (แม้ว่า Perl อาจถูกคอมไพล์ใหม่ด้วยตัวใดก็ได้
Unicode รุ่นก่อนหน้าเช่นกัน) รายการรายละเอียดของการเปลี่ยนแปลง Unicode 6.3 อยู่ที่
<http://www.unicode.org/versions/Unicode6.3.0/>.

ใหม่ "\p{ยูนิโค้ด}" ปกติ การแสดงออก Belt hold คุณสมบัติ
นี่คือคำพ้องความหมายสำหรับ "\p{Any}" และตรงกับชุดของโค้ดที่กำหนดโดย Unicode ชี้ 0 -
0x10FFFF.

ดีกว่า 64 บิต สนับสนุน
บนแพลตฟอร์ม 64 บิต ขณะนี้ฟังก์ชันอาร์เรย์ภายในใช้ออฟเซ็ต 64 บิต ทำให้ Perl
อาร์เรย์ที่จะเก็บมากกว่า 2**31 องค์ประกอบถ้าคุณมีหน่วยความจำที่พร้อมใช้งาน

ขณะนี้เอ็นจินนิพจน์ทั่วไปรองรับสตริงที่ยาวกว่า 2**31 อักขระ [เพิร์ล
#112790, #116907]

ฟังก์ชั่น PerlIO_get_bufsiz, PerlIO_get_cnt, PerlIO_set_cnt และ PerlIO_set_ptrcnt ทันที
มี SSize_t แทนที่จะเป็น int ให้คืนค่าและพารามิเตอร์

"ใช้ สถานที่" ตอนนี้ โรงงาน on UTF-8 ในประเทศ
จนถึงรุ่นนี้ รองรับเฉพาะโลแคลแบบไบต์เดียว เช่น ซีรีส์ ISO 8859
ขณะนี้ ยังรองรับโลแคล UTF-8 แบบหลายไบต์ที่ใช้กันทั่วไปเพิ่มมากขึ้นด้วย โลแคล UTF-8
เป็นชุดอักขระที่ชุดอักขระ Unicode และการเข้ารหัสเป็น UTF-8 POSIX
การดำเนินการหมวดหมู่ "LC_CTYPE" (การเปลี่ยนตัวพิมพ์ (เช่น "lc()", "\U") และ character
การจัดหมวดหมู่ ("\w", "\D", "qr/[[:punct:]]/")) ภายใต้โลแคลนั้นทำงานเหมือนกับว่าไม่
ภายใต้สถานที่ แต่แทนที่จะอยู่ภายใต้ "ใช้คุณลักษณะ 'unicode_strings'" ยกเว้นกฎมลทิน
ถูกติดตาม การเรียงลำดับยังคงอยู่ตามลำดับจุดโค้ดในรุ่นนี้ [เพิร์ล #56820].

"ใช้ สถานที่" ตอนนี้ คอมไพล์ on ระบบ ไม่มี ในประเทศ ความสามารถ
ก่อนหน้านี้การทำเช่นนี้ทำให้โปรแกรมไม่สามารถคอมไพล์ได้ ภายในขอบเขตของโปรแกรม
ทำงานราวกับว่าอยู่ในโลแคล "C" ดังนั้นโปรแกรมที่เขียนขึ้นสำหรับแพลตฟอร์มที่รองรับ locales
สามารถทำงานบนแพลตฟอร์มที่ไม่มีสถานที่โดยไม่มีการเปลี่ยนแปลง ความพยายามที่จะเปลี่ยนสถานที่ออกจาก
แน่นอนว่าโลแคล "C" จะล้มเหลว

เพิ่มเติม ในประเทศ การเขียนอักษรย่อ รั้งท้าย ตัวเลือก
หากมีข้อผิดพลาดกับสถานที่ในระหว่างการเริ่มต้น Perl มันจะเลิกใช้และพยายามทันที
เพื่อใช้โลแคล "C" ตอนนี้มันพยายามใช้โลแคลอื่นที่กำหนดโดยสภาพแวดล้อมก่อน
ตัวแปรตามรายละเอียดใน "สิ่งแวดล้อม" ใน perllocale ตัวอย่างเช่น ถ้า "LC_ALL" และ
"LANG" ถูกตั้งค่าไว้ทั้งคู่ และการใช้โลแคล "LC_ALL" ล้มเหลว Perl จะลองใช้ "LANG"
locale และหากล้มเหลวเท่านั้น มันจะถอยกลับไปที่ "C" บนเครื่อง Windows Perl will
ลอง ก่อนใช้ "C" โลแคลเริ่มต้นของระบบหากโลแคลทั้งหมดที่กำหนดโดยสภาพแวดล้อม
ตัวแปรล้มเหลว

"-ดีแอล" รันไทม์ ตัวเลือก ตอนนี้ ที่เพิ่ม for การติดตาม ในประเทศ การตั้งค่า
ได้รับการออกแบบมาสำหรับนักพัฒนาหลักของ Perl เพื่อช่วยในการแก้จุดบกพร่องภาคสนามเกี่ยวกับ
ในประเทศ

-F ตอนนี้ หมายถึง -a และ -a หมายถึง -n
ก่อนหน้านี้ -F ไม่มี -a เป็น no-op และ -a ไม่มี -n or -p เป็น no-op ด้วยสิ่งนี้
เปลี่ยนถ้าคุณจัดหา -F แล้วทั้งสอง -a และ -n เป็นนัยและถ้าคุณจัดหา -a แล้วก็ -n is
โดยนัย

ยังใช้ได้อยู่นะครับ -p สำหรับพฤติกรรมพิเศษของมัน [เพิร์ล #116190]

$a และ $b คำเตือน การยกเว้น
ตัวแปรพิเศษ $a และ $b ที่ใช้ใน "sort" ได้รับการยกเว้นจากคำเตือน "used Once"
แม้จะไม่ได้ใช้ "sort" ทำให้โมดูล CPAN จัดเตรียมฟังก์ชันได้ง่ายขึ้น
ใช้ $a และ $b เพื่อวัตถุประสงค์ที่คล้ายกัน [เพิร์ล #120462]

ความปลอดภัย


หลีกเลี่ยง เป็นไปได้ อ่าน of ฟรี()d หน่วยความจำ ในระหว่าง การแยกวิเคราะห์
เป็นไปได้ว่า ฟรี()d หน่วยความจำสามารถอ่านได้ในระหว่างการแยกวิเคราะห์ในความผิดปกติ
สถานการณ์ของโปรแกรม Perl ที่ลงท้ายด้วย heredoc และบรรทัดสุดท้ายของไฟล์ใน
ดิสก์ไม่มีอักขระขึ้นบรรทัดใหม่ ตอนนี้ได้รับการแก้ไขแล้ว

เข้ากันไม่ได้ การเปลี่ยนแปลง


"ทำ" สามารถ ไม่ อีกต่อไป be มือสอง ไปยัง โทรศัพท์ ซับรูทีน
แบบฟอร์ม "do SUBROUTINE(LIST)" ส่งผลให้มีคำเตือนการเลิกใช้งานตั้งแต่ Perl v5.0.0
และตอนนี้เป็นข้อผิดพลาดทางไวยากรณ์

คำพูดเหมือน หลบหนี การเปลี่ยนแปลง
อักขระหลัง "\c" ในสตริงที่มีเครื่องหมายคำพูดคู่ ("..." หรือ qq(...)) หรือ Regular
ขณะนี้นิพจน์ต้องเป็นอักขระที่พิมพ์ได้และต้องไม่ใช่ "{"

ตัวอักษร "{" หลัง "\B" หรือ "\b" เป็นอันตรายถึงชีวิต

สิ่งเหล่านี้เลิกใช้แล้วใน perl v5.14.0

เทนติ้ง ที่เกิดขึ้น ภายใต้ ข้อมูลเพิ่มเติม สถานการณ์; ตอนนี้ สอดรับ ไปยัง เอกสาร
ซึ่งจะส่งผลต่อการจับคู่นิพจน์ทั่วไปและการเปลี่ยนตัวพิมพ์ของสตริง ("lc", "\U",
ฯลฯ.) ภายในขอบเขตของ "ใช้สถานที่" ตอนนี้ผลที่ได้เสียไปขึ้นอยู่กับการดำเนินการ
ไม่ว่าเนื้อหาของสตริงจะเป็นอย่างไร ตามเอกสาร (perlsec, "SECURITY"
ใน perllocale) บ่งชี้ว่าควร ก่อนหน้านี้ สำหรับการดำเนินการเปลี่ยนกรณี ถ้า
สตริงไม่มีอักขระที่การเปลี่ยนแปลงกรณีและปัญหาอาจได้รับผลกระทบจากโลแคล
ผลลัพธ์จะไม่เสีย ตัวอย่างเช่น ผลลัพธ์ของ "uc()" ในสตริงว่างหรือ one
ที่มีเฉพาะจุดโค้ดเหนือ Latin1 เท่านั้นที่เสียไปและไม่เคยมีมาก่อน นี่นำไปสู่
ผลการย้อมสีที่สม่ำเสมอมากขึ้น รูปแบบนิพจน์ทั่วไปทำให้เสียค่าที่ไม่ใช่ไบนารี
ผลลัพธ์ (เช่น $&, $2) หากรูปแบบมีองค์ประกอบที่การจับคู่ขึ้นอยู่กับ
ในสถานที่ปัจจุบัน (ที่อาจเสีย) เช่นเดียวกับฟังก์ชันการเปลี่ยนเคส จริง
เนื้อหาของสตริงที่ตรงกันตอนนี้ไม่สำคัญ ในขณะที่เมื่อก่อนเป็นอย่างนั้น สำหรับ
ตัวอย่าง หากรูปแบบมี "\w" ผลลัพธ์จะเสียแม้ว่าการจับคู่จะไม่
ไม่ต้องใช้รูปแบบส่วนนั้นให้สำเร็จหรือล้มเหลวเพราะว่า "\w" คืออะไร
การแข่งขันขึ้นอยู่กับสถานที่ อย่างไรก็ตาม ตัวอย่างเช่น "." ในรูปแบบจะไม่เปิดใช้งาน
เสียเพราะจุดตรงกับอักขระตัวเดียวและสิ่งที่สถานที่ปัจจุบันคือ
ไม่ได้เปลี่ยนแปลงในทางใดทางหนึ่งสิ่งที่ตรงกันและสิ่งที่ไม่

"\p{}", "\NS{}" การจับคู่ มี การเปลี่ยนแปลง for ไม่ใช่ Unicode รหัส จุด
"\p{}" และ "\P{}" ถูกกำหนดโดย Unicode เฉพาะในจุดโค้ดที่กำหนดด้วย Unicode เท่านั้น ("U+0000"
ผ่าน "U+10FFFF") พฤติกรรมของพวกเขาในการจับคู่จุดรหัส Unicode ทางกฎหมายเหล่านี้คือ
ไม่เปลี่ยนแปลง แต่มีการเปลี่ยนแปลงสำหรับจุดรหัส 0x110000 ขึ้นไป ก่อนหน้านี้ Perl
ถือว่าผลลัพธ์ของการจับคู่ "\p{}" และ "\P{}" กับสิ่งเหล่านี้เป็น "undef" ซึ่ง
แปลเป็น "เท็จ" สำหรับ "\P{}" สิ่งนี้ถูกเติมเต็มเป็น "จริง" คำเตือน
ควรจะได้รับการเลี้ยงดูเมื่อสิ่งนี้เกิดขึ้น อย่างไรก็ตาม การเพิ่มประสิทธิภาพต่างๆ สามารถทำได้
ป้องกันการตักเตือนและผลมักจะตอบโต้ด้วยสัญชาตญาณทั้งแบบจับคู่และ
ดูเหมือนว่าการเติมเต็มนั้นเป็นเท็จ ตอนนี้จุดโค้ดที่ไม่ใช่ Unicode ทั้งหมดจะถือว่าเป็น
จุดรหัส Unicode ที่ไม่ได้กำหนดโดยทั่วไป โดยทั่วไปแล้วจะเป็น Do-What-I-Mean มากกว่า คำเตือน
จะเพิ่มขึ้นก็ต่อเมื่อผลลัพธ์แตกต่างไปจากแนวทาง Unicode ที่เข้มงวดและ
จากสิ่งที่ Perl เคยทำ รหัสที่ต้องปฏิบัติตาม Unicode อย่างเคร่งครัดสามารถทำได้
เตือนถึงขั้นเสียชีวิต จากนั้น Perl จะส่งคำเตือนเสมอ

รายละเอียดอยู่ใน "นอกเหนือจากจุดโค้ด Unicode" ใน perlunicode

"\p{ทั้งหมด}" มี รับ ขยาย ไปยัง การจับคู่ ทั้งหมด เป็นไปได้ รหัส จุด
องค์ประกอบรูปแบบนิพจน์ทั่วไปที่กำหนดโดย Perl "\p{All}" ไม่ได้ใช้บน CPAN ใช้เพื่อ
จับคู่เฉพาะจุดโค้ด Unicode ตอนนี้มันตรงกับจุดรหัสที่เป็นไปได้ทั้งหมด นั่นแหละ
เทียบเท่ากับ "qr/./s" ดังนั้น "\p{All}" จึงไม่มีความหมายเหมือนกันกับ "\p{Any}" อีกต่อไป ซึ่ง
ยังคงจับคู่เฉพาะจุดรหัส Unicode ตามที่ Unicode บอกว่าควร

Data::Dumper's เอาท์พุต อาจ เปลี่ยนแปลง
ขึ้นอยู่กับโครงสร้างข้อมูลที่ถูกดัมพ์และการตั้งค่าที่กำหนดไว้สำหรับ Data::Dumper, the dumped
ผลลัพธ์อาจเปลี่ยนไปจากเวอร์ชันก่อนหน้า

หากคุณมีการทดสอบที่ขึ้นอยู่กับผลลัพธ์ที่แน่นอนของ Data::Dumper การทดสอบอาจล้มเหลว

เพื่อหลีกเลี่ยงปัญหานี้ในโค้ดของคุณ ให้ทดสอบกับโครงสร้างข้อมูลจากการประเมิน
โครงสร้างแบบดัมพ์ แทนที่จะเป็นแบบดัมพ์เอง

สถานที่เกิดเหตุ ทศนิยม จุด ตัวอักษร ไม่ อีกต่อไป การรั่วไหลของ ด้านนอก of "ใช้ สถานที่" ขอบเขต
จริงๆ แล้วนี่เป็นการแก้ไขข้อผิดพลาด แต่โค้ดบางตัวต้องอาศัยข้อบกพร่องที่มีอยู่ ดังนั้น
การเปลี่ยนแปลงนี้แสดงไว้ที่นี่ โลแคลปัจจุบันที่โปรแกรมกำลังทำงานอยู่ไม่ใช่
ควรมองเห็นรหัส Perl ยกเว้นภายในขอบเขตของ "ใช้สถานที่" อย่างไรก็ตาม,
จนถึงขณะนี้ในบางสถานการณ์ อักขระที่ใช้สำหรับจุดทศนิยม (มักจะ a
เครื่องหมายจุลภาค) รั่วไหลออกนอกขอบเขต หากโค้ดของคุณได้รับผลกระทบจากการเปลี่ยนแปลงนี้ เพียงเพิ่ม a
"ใช้สถานที่".

การมอบหมาย of Windows ซ็อกเก็ต ความผิดพลาด รหัส ไปยัง $! ตอนนี้ ชอบ เอ่อ ค่า เกิน
WSAGetLastError() ค่า
ในเวอร์ชันก่อนหน้าของ Perl นั้น Windows ซ็อกเก็ตรหัสข้อผิดพลาดตามที่ส่งกลับโดย WSAGetLastError()
ถูกกำหนดให้กับ $! และค่าคงที่บางอย่างเช่น ECONNABORTED ไม่ใช่ใน เอ่อ ใน VC++ (หรือ
พอร์ต Windows ต่างๆ ของ gcc) ถูกกำหนดให้เป็นค่า WSAE* ที่สอดคล้องกันเพื่อให้ $!
เพื่อทดสอบกับค่าคงที่ E* ที่ส่งออกโดย Errno และ POSIX

ใช้งานได้ดีจนถึง VC++ 2010 และใหม่กว่า ซึ่งแนะนำค่าคงที่ E* ใหม่พร้อมค่า
> 100 เป็น เอ่อรวมถึงค่าที่กำหนดโดย Perl ถึง WSAE* บางส่วน (อีกครั้ง) ที่ทำให้
ปัญหาเมื่อเชื่อมโยงโค้ด XS กับไลบรารีอื่นที่ใช้คำจำกัดความเดิม
of เอ่อ ค่าคงที่

เพื่อหลีกเลี่ยงความไม่ลงรอยกันนี้ ตอนนี้ Perl จะจับคู่รหัสข้อผิดพลาด WSAE* กับค่า E* โดยที่
เป็นไปได้และกำหนดค่าเหล่านั้นให้กับ $! ค่าคงที่ E* ที่ส่งออกโดย Errno และ POSIX
ได้รับการอัปเดตเพื่อให้ตรงกับการทดสอบ $! ต่อพวกเขาไม่ว่าจะเป็นไปได้ก่อนหน้านี้จะ
ทำงานต่อไปตามที่คาดไว้ และค่าคงที่ E* ทั้งหมดที่พบใน เอ่อ ตอนนี้กำลังส่งออกจาก
โมดูลเหล่านั้นด้วยต้นฉบับ เอ่อ ค่า

เพื่อหลีกเลี่ยงการแตกในรหัส Perl ที่มีอยู่ซึ่งกำหนดค่า WSAE* ให้กับ $!, perl
ตอนนี้ขัดขวางการมอบหมายและทำการแมปเดียวกันกับค่า E* ตามที่ใช้
ภายในเมื่อมอบหมายให้ $! ตัวเอง.

อย่างไรก็ตาม ความเข้ากันไม่ได้แบบย้อนหลังหนึ่งรายการยังคงอยู่: รหัส Perl ที่มีอยู่ซึ่งเปรียบเทียบ $!
เทียบกับค่าตัวเลขของรหัสข้อผิดพลาด WSAE* ที่เคยกำหนดให้กับ $!
จะถูกทำลายในกรณีที่กำหนดค่า E* ที่สอดคล้องกัน
แทนที่. นี่เป็นเพียงปัญหาสำหรับค่า E* เหล่านั้น < 100 ซึ่งส่งออกจาก .เสมอ
Errno และ POSIX พร้อมต้นฉบับ เอ่อ ค่าจึงใช้ไม่ได้กับ
การทดสอบรหัสข้อผิดพลาด WSAE* (เช่น WSAEINVAL คือ 10022 แต่ EINVAL ที่สอดคล้องกันคือ 22) (อ*
ค่า > 100 หากมี ถูกกำหนดใหม่เป็นค่า WSAE* อยู่แล้ว ดังนั้นความเข้ากันได้จึงเป็น
ทำได้โดยใช้ค่าคงที่ E* ซึ่งจะทำงานทั้งก่อนและหลังการเปลี่ยนแปลงนี้
ถึงแม้ว่าจะใช้ค่าตัวเลขต่างกันภายใต้ประทุนก็ตาม)

ฟังก์ชั่น "PerlIO_vsprintf" และ "PerlIO_sprintf" มี รับ ลบออก
ฟังก์ชันทั้งสองนี้ ซึ่งไม่มีเอกสาร ไม่ได้ใช้ใน CPAN และที่มีปัญหา ถูกลบออกแล้ว

การเลิกใช้


รางวัล "/\ค/" ตัวอักษร ชั้น
คลาสอักขระนิพจน์ทั่วไป "/\C/" เลิกใช้แล้ว ตั้งแต่ perl 5.22 เป็นต้นไป
จะสร้างคำเตือนและจาก Perl 5.24 เป็นต้นไปจะเป็นนิพจน์ทั่วไป
ข้อผิดพลาดของคอมไพเลอร์ หากคุณต้องการตรวจสอบแต่ละไบต์ที่ประกอบขึ้นเป็น UTF8-encoded
อักขระ จากนั้นใช้ "utf8::encode()" ในสตริง (หรือสำเนา) ก่อน

ตามตัวอักษร ควบคุม อักขระ in ตัวแปร ชื่อ
การเลิกใช้งานนี้ส่งผลต่อสิ่งต่างๆ เช่น $\cT โดยที่ \cT เป็นตัวควบคุมตามตัวอักษร (เช่น "NAK"
หรืออักขระ "NEGATIVE ACKNOWLEDGE") ในซอร์สโค้ด น่าแปลกที่ดูเหมือนว่า
แต่เดิมมีจุดประสงค์เพื่อให้เป็นวิธีการเข้าถึงตัวแปรเช่น $^T, with
แบบฟอร์มคาเร็ตจะถูกเพิ่มเป็นทางเลือกเท่านั้น

แบบฟอร์มการควบคุมตามตัวอักษรกำลังถูกเลิกใช้ด้วยเหตุผลหลักสองประการ มันมีสิ่งที่เป็นไปได้
บั๊กที่ไม่สามารถแก้ไขได้ เช่น $\cI ไม่ทำงานเป็นนามแฝงสำหรับ $^I และการใช้งานไม่เป็น
แบบพกพาไปยังแพลตฟอร์มที่ไม่ใช่ ASCII: แม้ว่า $^T จะทำงานได้ทุกที่ \cT เป็นช่องว่างใน
อีบีดิก. [เพิร์ล #119123]

อ้างอิง ไปยัง ไม่ใช่จำนวนเต็ม และ ไม่เป็นบวก จำนวนเต็ม in $/
การตั้งค่า $/ เป็นค่าอ้างอิงเป็นศูนย์หรือการอ้างอิงจำนวนเต็มลบเลิกใช้แล้ว
และจะประพฤติตัว เผง ราวกับว่ามันถูกตั้งค่าเป็น "undef" หากคุณต้องการชุดพฤติกรรมน้ำลาย
$/ เป็น "undef" อย่างชัดเจน

ขณะนี้การตั้งค่า $/ เป็นการอ้างอิงที่ไม่ใช่จำนวนเต็มถูกห้ามและจะทำให้เกิดข้อผิดพลาด Perl
ไม่เคยบันทึกว่าจะเกิดอะไรขึ้นในบริบทนี้และในขณะที่มันเคยประพฤติ
เช่นเดียวกับการตั้งค่า $/ เป็นที่อยู่ของการอ้างอิงในอนาคตอาจมีการทำงานแตกต่างกัน
ดังนั้นเราจึงห้ามการใช้งานนี้

คาแรคเตอร์ การจับคู่ กิจวัตร in POSIX
เลิกใช้งานฟังก์ชันใดๆ เหล่านี้ในโมดูล "POSIX" แล้ว: "isalnum",
"isalpha", "iscntrl", "isdigit", "isgraph", "islower", "isprint", "ispunct", "isspace",
"isupper" และ "isxdigit" ฟังก์ชันมีข้อบกพร่องและไม่สามารถใช้ได้กับการเข้ารหัส UTF-8
สตริง ดูรายการของพวกเขาใน POSIX สำหรับข้อมูลเพิ่มเติม

มีการเตือนในการโทรครั้งแรกถึงพวกเขาจากแต่ละแห่งในรหัสที่พวกเขา
เรียกว่า. (ดังนั้น คำสั่งซ้ำในลูปจะทำให้เกิดคำเตือนเพียงครั้งเดียว)

ตามล่าม หัวข้อ เป็น ตอนนี้ หมดกำลังใจ
"เธรดที่ใช้ล่าม" ที่จัดทำโดย Perl ไม่ใช่ระบบที่รวดเร็วและน้ำหนักเบาสำหรับ
การทำงานหลายอย่างที่อาจคาดหวังหรือคาดหวัง เธรดจะดำเนินการในลักษณะที่
ทำให้ง่ายต่อการใช้งานในทางที่ผิด น้อยคนนักที่จะรู้วิธีใช้อย่างถูกต้องหรือจะสามารถ
ให้ความช่วยเหลือ

เราไม่แนะนำให้ใช้ชุดข้อความที่ใช้ล่ามในภาษา Perl อย่างเป็นทางการ

โมดูล การลบออก
โมดูลต่อไปนี้จะถูกลบออกจากการแจกจ่ายหลักในรุ่นต่อ ๆ ไปและ
จะต้องติดตั้งจาก CPAN ในเวลานั้น การกระจายบน CPAN ที่ต้องการ
โมดูลเหล่านี้จะต้องแสดงรายการเป็นข้อกำหนดเบื้องต้น

เวอร์ชันหลักของโมดูลเหล่านี้จะออกคำเตือนประเภท "เลิกใช้แล้ว" เพื่อแจ้งเตือน
คุณถึงความจริงข้อนี้ เพื่อปิดเสียงคำเตือนการเลิกใช้งานเหล่านี้ ให้ติดตั้งโมดูลที่เป็นปัญหา
จาก กปปส.

โปรดทราบว่าการวางแผนถอดโมดูลเหล่านี้ออกจากแกนกลางไม่ได้สะท้อนถึงการตัดสิน
เกี่ยวกับคุณภาพของรหัสและไม่ควรนำมาเป็นข้อเสนอแนะว่าการใช้งานนั้น
หยุด การแยกตัวออกจากแกนหลักขึ้นอยู่กับความจำเป็นในการบูตสแตรป
การติดตั้ง Perl ที่ทำงานได้อย่างสมบูรณ์และใช้งาน CPAN ได้ ไม่ต้องกังวลเรื่องการออกแบบ

CGI และ CGI ที่เกี่ยวข้อง:: แพ็คเกจ
inc::ล่าสุด
แพ็คเกจ::ค่าคงที่
Module::Build และ Module::Build:: packages . ที่เกี่ยวข้อง

ประโยชน์ การลบออก
โปรแกรมอรรถประโยชน์ต่อไปนี้จะถูกลบออกจากการกระจายหลักในรุ่นต่อ ๆ ไป
และจะต้องติดตั้งจาก CPAN ในขณะนั้น

find2perl
s2p
a2p

ประสิทธิภาพ การเพิ่มประสิทธิภาพ


· Perl มีกลไกการคัดลอกเมื่อเขียนใหม่ที่ไม่ต้องคัดลอกภายใน
บัฟเฟอร์สตริงเมื่อกำหนดจากสเกลาร์หนึ่งไปยังอีกสเกลาร์ ทำให้การคัดลอกมีขนาดใหญ่
สตริงปรากฏเร็วขึ้นมาก การแก้ไขหนึ่งในสองสตริง (หรือมากกว่า) หลัง an
การมอบหมายจะบังคับให้ทำสำเนาภายใน ทำให้ไม่จำเป็นต้องส่งผ่านสตริงโดย
อ้างอิงสำหรับประสิทธิภาพ

คุณลักษณะนี้มีให้ใช้งานแล้วใน 5.18.0 แต่ไม่ได้เปิดใช้งานโดยค่าเริ่มต้น มันคือ
เริ่มต้นทันที ดังนั้นคุณไม่จำเป็นต้อง build perl ด้วย the . อีกต่อไป กำหนดค่า ข้อโต้แย้ง:

-Accflags=-DPERL_NEW_COPY_ON_WRITE

มันสามารถปิดการใช้งาน (ตอนนี้) ใน perl build ด้วย:

-Accflags=-DPERL_NO_COW

ในบางระบบปฏิบัติการ Perl สามารถคอมไพล์ในลักษณะที่ความพยายามใด ๆ ที่จะ
แก้ไขบัฟเฟอร์สตริงที่แชร์โดย SV หลายรายการจะขัดข้อง วิธีนี้ผู้เขียน XS สามารถทดสอบได้
ว่าโมดูลของพวกเขาจัดการกับสเกลาร์ copy-on-write ได้อย่างถูกต้อง ดู "คัดลอกเมื่อเขียน" ใน
perlguts สำหรับรายละเอียด

· Perl มีเครื่องมือเพิ่มประสิทธิภาพสำหรับรูปแบบนิพจน์ทั่วไป มันวิเคราะห์รูปแบบการ
ค้นหาสิ่งต่าง ๆ เช่นความยาวขั้นต่ำที่สตริงจะต้องตรงกัน ฯลฯ ตอนนี้
จัดการจุดโค้ดที่อยู่เหนือช่วง Latin1 ได้ดีกว่า

· ดำเนินการ regex ที่มีจุดยึด "^" (หรือตัวแปรภายใต้แฟล็ก "/m")
ได้รวดเร็วขึ้นมากในหลายสถานการณ์

· ขณะนี้มีการใช้ค่าแฮชที่คำนวณไว้ล่วงหน้าในที่ต่างๆ มากขึ้นระหว่างการค้นหาเมธอด

· การค้นหาคีย์แฮชแบบคงที่ ($hash{key} เมื่อเทียบกับ $hash{$key}) มีมานานแล้ว
ค่าแฮชภายในที่คำนวณในเวลารวบรวม เพื่อเพิ่มความเร็วในการค้นหา การเพิ่มประสิทธิภาพนี้
ถูกนำไปใช้กับแฮชสไลซ์เท่านั้นในตอนนี้

· รวมตัวดำเนินการ "และ" และ "หรือ" ในบริบทที่เป็นโมฆะ เช่นเดียวกับที่สร้างขึ้นสำหรับ "เว้นแต่
($a && $b)" และ "if ($a || b)" ลัดวงจรตรงไปยังจุดสิ้นสุดของคำสั่ง
[เพิร์ล #120128]

· ในบางสถานการณ์ เมื่อ "return" เป็นคำสั่งสุดท้ายใน main . ของรูทีนย่อย
ขอบเขตก็จะถูกปรับให้เหมาะสมที่สุด นี่หมายถึงรหัสที่ชอบ:

sub baz { ส่งคืน $cat; }

ตอนนี้จะมีพฤติกรรมเช่น:

ซับบาซ { $cat; }

ซึ่งเร็วกว่าอย่างเห็นได้ชัด

[เพิร์ล #120765]

· รหัสที่ชอบ:

$x ของฉัน; # หรือ @x, %x
$y ของฉัน;

ตอนนี้ได้รับการปรับให้เหมาะสมเพื่อ:

ของฉัน ($x, $y);

เมื่อใช้ร่วมกับการเพิ่มประสิทธิภาพ padrange ที่นำมาใช้ใน v5.18.0 นี่หมายถึงอีกต่อไป
ไม่ได้กำหนดค่าเริ่มต้น คำสั่งตัวแปรของฉันได้รับการปรับให้เหมาะสมเช่นกัน ดังนั้น:

$x ของฉัน; ของฉัน @y; %z ของฉัน;

กลายเป็น:

ของฉัน ($x, @y, %z);

[เพิร์ล #121077]

· การสร้างรายการบางประเภท รวมถึงอาร์เรย์และแฮชสไลซ์ ได้เริ่มขึ้นแล้ว
ได้เร็วขึ้น

· การปรับให้เหมาะสมสำหรับอาร์เรย์ที่จัดทำดัชนีด้วยจำนวนเต็มคงที่ขนาดเล็กถูกนำไปใช้กับ
จำนวนเต็มในช่วง -128..127 แทนที่จะเป็น 0 สิ่งนี้ควรเร่งความเร็วของรหัส Perl
ใช้นิพจน์เช่น $x[-1] โดยใช้โค้ด (น่าจะหายากกว่ามาก) โดยใช้
นิพจน์เช่น $x[200]

· การวนซ้ำครั้งแรกบนแฮชขนาดใหญ่ (โดยใช้ "คีย์" หรือ "แต่ละอัน") เร็วขึ้นแล้ว นี่คือ
ทำได้โดยการจัดสรรสถานะตัววนซ้ำภายในของแฮชล่วงหน้า แทนที่จะเป็นแบบขี้เกียจ
สร้างขึ้นเมื่อมีการทำซ้ำแฮชครั้งแรก (สำหรับแฮชขนาดเล็ก ตัววนซ้ำจะยังคงอยู่
สร้างขึ้นเมื่อจำเป็นในครั้งแรกเท่านั้น สมมติฐานคือแฮชขนาดเล็กมีแนวโน้มที่จะ
ใช้เป็นวัตถุจึงไม่เคยจัดสรร สำหรับแฮชขนาดใหญ่ นั่นน้อยกว่า
มีแนวโน้มว่าจะเป็นจริง และค่าใช้จ่ายในการจัดสรรตัววนซ้ำนั้นล้นด้วยต้นทุนของ
จัดสรรพื้นที่สำหรับแฮชเอง)

· เมื่อทำการจับคู่ regex ทั่วโลกกับสตริงที่มาจาก "readline" หรือ "<>"
โอเปอเรเตอร์ ข้อมูลจะไม่ถูกคัดลอกโดยไม่จำเป็นอีกต่อไป [เพิร์ล #121259]

· Dereference (เช่นใน "$obj->[0]" หรือ "$obj->{k}") จะเร็วขึ้นเมื่อ $obj เป็น
อินสแตนซ์ของคลาสที่มีเมธอดโอเวอร์โหลด แต่ไม่โอเวอร์โหลดใดๆ ของ
วิธีการยกเลิกการอ้างอิง "@{}", "%{}" เป็นต้น

· เครื่องมือเพิ่มประสิทธิภาพของ Perl จะไม่ข้ามโค้ดการเพิ่มประสิทธิภาพที่ตามหลัง "eval {}" บางอย่างอีกต่อไป
นิพจน์ (รวมถึงนิพจน์ที่มีวงอนันต์ชัดเจน)

· การใช้งานในขณะนี้สามารถหลีกเลี่ยงการทำงานที่ไม่มีความหมายในขณะใช้งานจริงได้ดีขึ้น
การดำเนินการ "null" ที่ปราศจากเอฟเฟกต์ภายใน (สร้างเป็นผลข้างเคียงของการแยกวิเคราะห์ Perl
โปรแกรม) โดยปกติจะถูกลบในระหว่างการคอมไพล์ การลบนั้นถูกนำไปใช้ใน
บางสถานการณ์ที่ไม่ได้รับการจัดการก่อนหน้านี้

· Perl ตอนนี้ใช้ดิสก์ I/O น้อยลงเมื่อจัดการกับคุณสมบัติ Unicode ที่ครอบคลุมถึง
สามช่วงของจุดรหัสต่อเนื่องกัน

โมดูล และ ในทางปฏิบัติ


ใหม่ โมดูล และ ในทางปฏิบัติ
· เพิ่ม 0.007 แบบทดลองใน Perl core แล้ว

· เพิ่ม IO::Socket::IP 0.29 ใน Perl core แล้ว

วันที่อัพเดท โมดูล และ ในทางปฏิบัติ
· เอกสารเก่า :: Tar ได้รับการอัปเกรดจากเวอร์ชัน 1.90 เป็น 1.96

· arybase ได้รับการอัปเกรดจากเวอร์ชัน 0.06 เป็น 0.07

· คุณลักษณะ :: ตัวจัดการได้รับการอัปเกรดจากเวอร์ชัน 0.94 เป็น 0.96

· คุณลักษณะได้รับการอัปเกรดจากเวอร์ชัน 0.21 เป็น 0.22

· autodie ได้รับการอัปเกรดจากเวอร์ชัน 2.13 เป็น 2.23 แล้ว

· AutoLoader ได้รับการอัปเกรดจากเวอร์ชัน 5.73 เป็น 5.74 แล้ว

· autouse ได้รับการอัปเกรดจากเวอร์ชัน 1.07 เป็น 1.08

· B ได้รับการอัปเกรดจากเวอร์ชัน 1.42 เป็น 1.48 แล้ว

· B::Concise ได้รับการอัปเกรดจากเวอร์ชัน 0.95 เป็น 0.992 แล้ว

· B::Debug ได้รับการอัปเกรดจากเวอร์ชัน 1.18 เป็น 1.19

· B::Deparse ได้รับการอัปเกรดจากเวอร์ชัน 1.20 เป็น 1.26

· ฐานได้รับการอัปเกรดจากเวอร์ชัน 2.18 เป็น 2.22 แล้ว

· เกณฑ์มาตรฐานได้รับการอัปเกรดจากเวอร์ชัน 1.15 เป็น 1.18

· bignum ได้รับการอัปเกรดจากเวอร์ชัน 0.33 เป็น 0.37

· ปลาคาร์พได้รับการอัปเกรดจากเวอร์ชัน 1.29 เป็น 1.3301

· CGI ได้รับการอัปเกรดจากเวอร์ชัน 3.63 เป็น 3.65 หมายเหตุ: CGI เลิกใช้แล้วและอาจ
ถูกลบออกจาก Perl เวอร์ชันอนาคต

· charnames ได้รับการอัพเกรดจากเวอร์ชัน 1.36 เป็น 1.40

· คลาส :: โครงสร้างได้รับการอัปเกรดจากเวอร์ชัน 0.64 เป็น 0.65

· บีบอัด::Raw::Bzip2 ได้รับการอัปเกรดจากเวอร์ชัน 2.060 เป็น 2.064

· Compress::Raw::Zlib ได้รับการอัปเกรดจากเวอร์ชัน 2.060 เป็น 2.065

· Config::Perl::V ได้รับการอัปเกรดจากเวอร์ชัน 0.17 เป็น 0.20

· ค่าคงที่ได้รับการอัพเกรดจากเวอร์ชัน 1.27 เป็น 1.31

· CPAN ได้รับการอัปเกรดจากเวอร์ชัน 2.00 เป็น 2.05

· CPAN::Meta ได้รับการอัปเกรดจากเวอร์ชัน 2.120921 เป็น 2.140640

· CPAN::Meta::Requirements ได้รับการอัปเกรดจากเวอร์ชัน 2.122 เป็น 2.125

· CPAN::Meta::YAML ได้รับการอัปเกรดจากเวอร์ชัน 0.008 เป็น 0.012 แล้ว

· Data::Dumper ได้รับการอัปเกรดจากเวอร์ชัน 2.145 เป็น 2.151 แล้ว

· DB ได้รับการอัปเกรดจากเวอร์ชัน 1.04 เป็น 1.07

· DB_File ได้รับการอัปเกรดจากเวอร์ชัน 1.827 เป็น 1.831

· DBM_Filter ได้รับการอัปเกรดจากเวอร์ชัน 0.05 เป็น 0.06

· การเลิกใช้งานได้รับการอัปเกรดจากเวอร์ชัน 0.02 เป็น 0.03

· Devel::Peek ได้รับการอัปเกรดจากเวอร์ชัน 1.11 เป็น 1.16

· Devel::PPPort ได้รับการอัปเกรดจากเวอร์ชัน 3.20 เป็น 3.21 แล้ว

· การวินิจฉัยได้รับการอัปเกรดจากเวอร์ชัน 1.31 เป็น 1.34

· Digest::MD5 ได้รับการอัปเกรดจากเวอร์ชัน 2.52 เป็น 2.53 แล้ว

· Digest::SHA ได้รับการอัปเกรดจากเวอร์ชัน 5.84 เป็น 5.88 แล้ว

· DynaLoader ได้รับการอัปเกรดจากเวอร์ชัน 1.18 เป็น 1.25

· การเข้ารหัสได้รับการอัปเกรดจากเวอร์ชัน 2.49 เป็น 2.60

· การเข้ารหัสได้รับการอัปเกรดจากเวอร์ชัน 2.6_01 เป็น 2.12

· ภาษาอังกฤษได้รับการอัปเกรดจากเวอร์ชัน 1.06 เป็น 1.09

เพิ่ม $OLD_PERL_VERSION เป็นนามแฝงของ $]

· Errno ได้รับการอัปเกรดจากเวอร์ชัน 1.18 เป็น 1.20_03 แล้ว

· ผู้ส่งออกได้รับการอัปเกรดจากเวอร์ชัน 5.68 เป็น 5.70 แล้ว

· ExtUtils::CBuilder ได้รับการอัปเกรดจากเวอร์ชัน 0.280210 เป็น 0.280216

· ExtUtils::Command ได้รับการอัปเกรดจากเวอร์ชัน 1.17 เป็น 1.18

· ExtUtils::Embed ได้รับการอัปเกรดจากเวอร์ชัน 1.30 เป็น 1.32

· ExtUtils::Install ได้รับการอัปเกรดจากเวอร์ชัน 1.59 เป็น 1.67

· ExtUtils::MakeMaker ได้รับการอัปเกรดจากเวอร์ชัน 6.66 เป็น 6.98 แล้ว

· ExtUtils::Miniperl ได้รับการอัปเกรดจากเวอร์ชันเป็น 1.01 แล้ว

· ExtUtils::ParseXS ได้รับการอัปเกรดจากเวอร์ชัน 3.18 เป็น 3.24 แล้ว

· ExtUtils::Typemaps ได้รับการอัปเกรดจากเวอร์ชัน 3.19 เป็น 3.24 แล้ว

· ExtUtils::XSSymSet ได้รับการอัปเกรดจากเวอร์ชัน 1.2 เป็น 1.3 แล้ว

· อัปเกรดฟีเจอร์จากเวอร์ชัน 1.32 เป็น 1.36 แล้ว

· ฟิลด์ได้รับการอัปเกรดจากเวอร์ชัน 2.16 เป็น 2.17

· ไฟล์ :: Basename ได้รับการอัปเกรดจากเวอร์ชัน 2.84 เป็น 2.85 แล้ว

· ไฟล์ :: Copy ได้รับการอัปเกรดจากเวอร์ชัน 2.26 เป็น 2.29 แล้ว

· ไฟล์ :: DosGlob ได้รับการอัปเกรดจากเวอร์ชัน 1.10 เป็น 1.12 แล้ว

· ไฟล์ :: Fetch ได้รับการอัปเกรดจากเวอร์ชัน 0.38 เป็น 0.48

· ไฟล์ :: Find ได้รับการอัปเกรดจากเวอร์ชัน 1.23 เป็น 1.27 แล้ว

· File::Glob ได้รับการอัปเกรดจากเวอร์ชัน 1.20 เป็น 1.23 แล้ว

· ไฟล์ :: Spec ได้รับการอัปเกรดจากเวอร์ชัน 3.40 เป็น 3.47 แล้ว

· ไฟล์ :: Temp ได้รับการอัปเกรดจากเวอร์ชัน 0.23 เป็น 0.2304

· FileCache ได้รับการอัปเกรดจากเวอร์ชัน 1.08 เป็น 1.09

· ตัวกรอง :: Simple ได้รับการอัปเกรดจากเวอร์ชัน 0.89 เป็น 0.91

· ตัวกรอง ::Util::Call ได้รับการอัปเกรดจากเวอร์ชัน 1.45 เป็น 1.49 แล้ว

· Getopt::Long ได้รับการอัปเกรดจากเวอร์ชัน 2.39 เป็น 2.42 แล้ว

· Getopt::Std ได้รับการอัปเกรดจากเวอร์ชัน 1.07 เป็น 1.10 แล้ว

· Hash::Util::FieldHash ได้รับการอัปเกรดจากเวอร์ชัน 1.10 เป็น 1.15 แล้ว

· HTTP::Tiny ได้รับการอัปเกรดจากเวอร์ชัน 0.025 เป็น 0.043

· I18N::Langinfo ได้รับการอัปเกรดจากเวอร์ชัน 0.10 เป็น 0.11 แล้ว

· I18N::LangTags ได้รับการอัปเกรดจากเวอร์ชัน 0.39 เป็น 0.40 แล้ว

· หากได้รับการอัปเกรดจากเวอร์ชัน 0.0602 เป็น 0.0603

· inc::latest ได้รับการอัปเกรดจากเวอร์ชัน 0.4003 เป็น 0.4205 หมายเหตุ: inc::ล่าสุดคือ
เลิกใช้แล้วและอาจถูกลบออกจาก Perl เวอร์ชันอนาคต

· อัปเกรดจำนวนเต็มจากเวอร์ชัน 1.00 เป็น 1.01 แล้ว

· IO ได้รับการอัปเกรดจากเวอร์ชัน 1.28 เป็น 1.31

· IO::Compress::Gzip และผองเพื่อนได้รับการอัปเกรดจากเวอร์ชัน 2.060 เป็น 2.064 แล้ว

· IPC::Cmd ได้รับการอัปเกรดจากเวอร์ชัน 0.80 เป็น 0.92

· IPC::Open3 ได้รับการอัปเกรดจากเวอร์ชัน 1.13 เป็น 1.16

· IPC::SysV ได้รับการอัปเกรดจากเวอร์ชัน 2.03 เป็น 2.04

· JSON::PP ได้รับการอัปเกรดจากเวอร์ชัน 2.27202 เป็น 2.27203

· รายการ::Util ได้รับการอัปเกรดจากเวอร์ชัน 1.27 เป็น 1.38

· โลแคลได้รับการอัปเกรดจากเวอร์ชัน 1.02 เป็น 1.03

· Locale::Codes ได้รับการอัปเกรดจากเวอร์ชัน 3.25 เป็น 3.30 แล้ว

· Locale::Maketext ได้รับการอัปเกรดจากเวอร์ชัน 1.23 เป็น 1.25 แล้ว

· คณิตศาสตร์::BigInt ได้รับการอัปเกรดจากเวอร์ชัน 1.9991 เป็น 1.9993

· คณิตศาสตร์::BigInt::FastCalc ได้รับการอัปเกรดจากเวอร์ชัน 0.30 เป็น 0.31 แล้ว

· คณิตศาสตร์::BigRat ได้รับการอัปเกรดจากเวอร์ชัน 0.2604 เป็น 0.2606

· MIME::Base64 ได้รับการอัปเกรดจากเวอร์ชัน 3.13 เป็น 3.14 แล้ว

· โมดูล :: บิลด์ได้รับการอัปเกรดจากเวอร์ชัน 0.4003 เป็น 0.4205 หมายเหตุ: โมดูล :: บิลด์คือ
เลิกใช้แล้วและอาจถูกลบออกจาก Perl เวอร์ชันอนาคต

· โมดูล :: CoreList ได้รับการอัปเกรดจากเวอร์ชัน 2.89 เป็น 3.10

· โมดูล :: โหลดได้รับการอัปเกรดจากเวอร์ชัน 0.24 เป็น 0.32

· โมดูล :: Load::Conditional ได้รับการอัปเกรดจากเวอร์ชัน 0.54 เป็น 0.62 แล้ว

· โมดูล :: Metadata ได้รับการอัปเกรดจากเวอร์ชัน 1.000011 เป็น 1.000019

· mro ได้รับการอัปเกรดจากเวอร์ชัน 1.11 เป็น 1.16

· Net :: Ping ได้รับการอัปเกรดจากเวอร์ชัน 2.41 เป็น 2.43 แล้ว

· Opcode ได้รับการอัปเกรดจากเวอร์ชัน 1.25 เป็น 1.27

· Package::Constants ได้รับการอัปเกรดจากเวอร์ชัน 0.02 เป็น 0.04 บันทึก:
Package::Constants เลิกใช้แล้วและอาจถูกลบออกจาก Perl เวอร์ชันอนาคต

· Params::Check ได้รับการอัปเกรดจากเวอร์ชัน 0.36 เป็น 0.38

· parent ได้รับการอัปเกรดจากเวอร์ชัน 0.225 เป็น 0.228

· Parse::CPAN::Meta ได้รับการอัปเกรดจากเวอร์ชัน 1.4404 เป็น 1.4414

· Perl::OSType ได้รับการอัปเกรดจากเวอร์ชัน 1.003 เป็น 1.007 แล้ว

· perlfaq ได้รับการอัปเกรดจากเวอร์ชัน 5.0150042 เป็น 5.0150044

· PerlIO ได้รับการอัปเกรดจากเวอร์ชัน 1.07 เป็น 1.09

· การเข้ารหัส PerlIO :: ได้รับการอัปเกรดจากเวอร์ชัน 0.16 เป็น 0.18

· PerlIO::scalar ได้รับการอัปเกรดจากเวอร์ชัน 0.16 เป็น 0.18

· PerlIO::via ได้รับการอัปเกรดจากเวอร์ชัน 0.12 เป็น 0.14

· Pod::Escapes ได้รับการอัปเกรดจากเวอร์ชัน 1.04 เป็น 1.06

· Pod::Functions ได้รับการอัปเกรดจากเวอร์ชัน 1.06 เป็น 1.08

· Pod::Html ได้รับการอัปเกรดจากเวอร์ชัน 1.18 เป็น 1.21 แล้ว

· Pod::Parser ได้รับการอัปเกรดจากเวอร์ชัน 1.60 เป็น 1.62 แล้ว

· Pod::Perldoc ได้รับการอัปเกรดจากเวอร์ชัน 3.19 เป็น 3.23 แล้ว

· Pod::การใช้งานได้รับการอัปเกรดจากเวอร์ชัน 1.61 เป็น 1.63

· POSIX ได้รับการอัปเกรดจากเวอร์ชัน 1.32 เป็น 1.38_03 แล้ว

· ได้รับการอัปเกรดใหม่จากเวอร์ชัน 0.23 เป็น 0.26

· เซฟได้รับการอัปเกรดจากเวอร์ชัน 2.35 เป็น 2.37 แล้ว

· Scalar::Util ได้รับการอัปเกรดจากเวอร์ชัน 1.27 เป็น 1.38

· SDBM_File ได้รับการอัปเกรดจากเวอร์ชัน 1.09 เป็น 1.11

· ซ็อกเก็ตได้รับการอัปเกรดจากเวอร์ชัน 2.009 เป็น 2.013

· อัปเกรด Storable จากเวอร์ชัน 2.41 เป็น 2.49 แล้ว

· เข้มงวดได้รับการอัปเกรดจากเวอร์ชัน 1.07 เป็น 1.08

· หมวดย่อยได้รับการอัปเกรดจากเวอร์ชัน 1.01 เป็น 1.02

· Sys::Hostname ได้รับการอัปเกรดจากเวอร์ชัน 1.17 เป็น 1.18

· Sys::Syslog ได้รับการอัปเกรดจากเวอร์ชัน 0.32 เป็น 0.33

· Term::Cap ได้รับการอัปเกรดจากเวอร์ชัน 1.13 เป็น 1.15 แล้ว

· Term::ReadLine ได้รับการอัปเกรดจากเวอร์ชัน 1.12 เป็น 1.14 แล้ว

· การทดสอบ :: สายรัดได้รับการอัปเกรดจากเวอร์ชัน 3.26 เป็น 3.30

· การทดสอบ :: Simple ได้รับการอัพเกรดจากเวอร์ชัน 0.98 เป็น 1.001002

· ข้อความ::ParseWords ได้รับการอัปเกรดจากเวอร์ชัน 3.28 เป็น 3.29 แล้ว

· ข้อความ::แท็บได้รับการอัปเกรดจากเวอร์ชัน 2012.0818 เป็น 2013.0523

· ข้อความ::Wrap ได้รับการอัปเกรดจากเวอร์ชัน 2012.0818 เป็น 2013.0523 แล้ว

· เธรดได้รับการอัปเกรดจากเวอร์ชัน 3.02 เป็น 3.04

· เธรด :: คิวได้รับการอัปเกรดจากเวอร์ชัน 3.02 เป็น 3.05

· เธรดได้รับการอัปเกรดจากเวอร์ชัน 1.86 เป็น 1.93

· threads::shared ได้รับการอัปเกรดจากเวอร์ชัน 1.43 เป็น 1.46

· Tie::Array ได้รับการอัปเกรดจากเวอร์ชัน 1.05 เป็น 1.06

· Tie::ไฟล์ได้รับการอัปเกรดจากเวอร์ชัน 0.99 เป็น 1.00

· Tie::Hash ได้รับการอัปเกรดจากเวอร์ชัน 1.04 เป็น 1.05

· Tie::Scalar ได้รับการอัปเกรดจากเวอร์ชัน 1.02 เป็น 1.03

· Tie::StdHandle ได้รับการอัปเกรดจากเวอร์ชัน 4.3 เป็น 4.4 แล้ว

· เวลา :: HiRes ได้รับการอัปเกรดจากเวอร์ชัน 1.9725 เป็น 1.9726

· เวลา::Piece ได้รับการอัปเกรดจากเวอร์ชัน 1.20_01 เป็น 1.27 แล้ว

· Unicode::Collate ได้รับการอัปเกรดจากเวอร์ชัน 0.97 เป็น 1.04

· Unicode::Normalize ได้รับการอัปเกรดจากเวอร์ชัน 1.16 เป็น 1.17

· Unicode::UCD ได้รับการอัปเกรดจากเวอร์ชัน 0.51 เป็น 0.57

· utf8 ได้รับการอัปเกรดจากเวอร์ชัน 1.10 เป็น 1.13

· อัปเกรดเวอร์ชันจากเวอร์ชัน 0.9902 เป็น 0.9908 แล้ว

· vmsish ได้รับการอัปเกรดจากเวอร์ชัน 1.03 เป็น 1.04

· อัปเกรดคำเตือนจากเวอร์ชัน 1.18 เป็น 1.23 แล้ว

· Win32 ได้รับการอัปเกรดจากเวอร์ชัน 0.47 เป็น 0.49

· XS::Typemap ได้รับการอัปเกรดจากเวอร์ชัน 0.10 เป็น 0.13

· XSLoader ได้รับการอัปเกรดจากเวอร์ชัน 0.16 เป็น 0.17

เอกสาร


ใหม่ เอกสาร
ที่เก็บถาวร

เอกสารนี้ถูกลบออก (ที่จริงแล้วเปลี่ยนชื่อเป็น perlgit และได้รับการยกเครื่องใหม่ครั้งใหญ่) ใน Perl
v5.14 ทำให้เว็บไซต์เอกสาร Perl แสดงเวอร์ชันที่ล้าสมัยใน Perl
v5.12 เป็นเวอร์ชันล่าสุด ตอนนี้ได้รับการบูรณะในรูปแบบต้นขั้วนำผู้อ่านไปยัง
ข้อมูลปัจจุบัน

การเปลี่ยนแปลง ไปยัง ที่มีอยู่ เอกสาร
เพิร์ลดาต้า

· เพิ่มส่วนใหม่ลงในเอกสารดัชนี/ส่วนอาร์เรย์ค่าใหม่และคีย์/ค่า
ไวยากรณ์สไลซ์ของแฮช

perldbguts

· รูทีนย่อยดีบักเกอร์ "DB::goto" และ "DB::lsub" ได้รับการบันทึกไว้แล้ว [เพิร์ล #77680]

ความสับสน

· "\s" ที่ตรงกัน "\cK" ถูกทำเครื่องหมายว่าเป็นการทดลอง

· เธรดได้รับการยอมรับใน v5.8.0 (แต่ไม่สนับสนุน ณ v5.20.0)

· คู่ยาวไม่ถือเป็นการทดลอง

· รหัสในนิพจน์ทั่วไป กริยาย้อนรอยนิพจน์ทั่วไป และ lvalue
รูทีนย่อยไม่อยู่ในรายการทดลองอีกต่อไป (สิ่งนี้ยังส่งผลต่อ perlre และ
เพิร์ลซับ)

เพอร์ฟุน

· "chop" และ "chomp" ตอนนี้ทราบว่าสามารถรีเซ็ตตัววนซ้ำแฮชได้

· การจัดการข้อโต้แย้งของ "ผู้บริหาร" ได้รับการบันทึกไว้อย่างชัดเจนยิ่งขึ้น

· "eval EXPR" มีข้อแม้เกี่ยวกับการขยายจำนวนจุดลอยตัวในบางพื้นที่

· ขณะนี้ "goto EXPR" ได้รับการบันทึกเพื่อจัดการกับนิพจน์ที่ประเมินเป็นโค้ด
อ้างอิงราวกับว่ามันเป็น "goto &$coderef" พฤติกรรมนี้มีอายุอย่างน้อยสิบปี

· ตั้งแต่ Perl v5.10 เป็นไปได้ที่รูทีนย่อยใน @INC จะคืนค่าการอ้างอิง
ไปเป็นสเกลาร์ที่ถือซอร์สโค้ดเริ่มต้นไว้ข้างหน้าไฟล์ นี่คือตอนนี้
เอกสาร

· เอกสารของ "ผู้อ้างอิง" ได้รับการปรับปรุงเพื่อแนะนำการใช้ "ความสุข", "อิสา"
และ "reftype" เมื่อจัดการกับการอ้างอิงถึงวัตถุที่ได้รับพร

เพิร์ล

· มีการเปลี่ยนแปลงเล็กน้อยจำนวนมากเพื่อสะท้อนถึงการเปลี่ยนแปลงที่เกิดขึ้นกับ Perl internals ใน
รุ่นนี้

· เพิ่มส่วนใหม่เกี่ยวกับค่าแบบอ่านอย่างเดียวและคัดลอกเมื่อเขียนแล้ว

เพิร์ลแฮ็ค

· อัปเดตส่วน Super Quick Patch Guide แล้ว

Perlhacktips

· เอกสารได้รับการปรับปรุงเพื่อรวมตัวอย่างเพิ่มเติมของการใช้ "gdb"

เพิร์ลเล็กซ์วาร์น

· เอกสาร perllexwarn ใช้เพื่ออธิบายลำดับชั้นของหมวดหมู่คำเตือน
เข้าใจโดยคำเตือน Pragma คำอธิบายนั้นได้ถูกย้ายไปยังคำเตือนแล้ว
จัดทำเอกสารเองโดยปล่อยให้ perllexwarn เป็น stub ที่ชี้ไปที่มัน การเปลี่ยนแปลงนี้
รวมเอกสารทั้งหมดสำหรับคำเตือนเกี่ยวกับคำศัพท์ไว้ในที่เดียว

เปอร์โลแคล

· เอกสารตอนนี้กล่าวถึง เอฟซี() และ "\F" และรวมถึงการชี้แจงมากมายและ
การแก้ไขโดยทั่วไป

เพอร์ล็อป

· การออกแบบภาษาของ Perl มักเรียกร้องให้มีตัวดำเนินการ monomorphic นี่คือตอนนี้
กล่าวไว้อย่างชัดเจน

เพอร์โลเพนทุต

· บทช่วยสอน "เปิด" ได้รับการเขียนใหม่ทั้งหมดโดย Tom Christiansen และตอนนี้เน้นที่
ครอบคลุมเฉพาะพื้นฐาน แทนที่จะให้การอ้างอิงครอบคลุมทั้งหมด
สิ่งที่เปิดได้ การเขียนใหม่นี้เป็นผลมาจากการอภิปรายอย่างจริงจังเกี่ยวกับ
perl5-porters เริ่มต้นด้วยชุดการปรับปรุงที่เขียนโดย Alexander Hartmaier to
perlopentut ที่มีอยู่ เอกสาร "มากกว่าที่คุณเคยอยากรู้เกี่ยวกับ"เปิด"
อาจตามมาใน Perl รุ่นต่อๆ ไป

เพิร์ล

· ความจริงที่ว่าเอ็นจิ้น regexp ไม่ได้พยายามเรียก (?{}) และ (??{}) สร้าง
จำนวนครั้งที่ระบุใด ๆ (แม้ว่าโดยทั่วไปจะเป็น DWIM ในกรณีที่ประสบความสำเร็จ
ตรงกัน) ได้รับการบันทึกไว้

· ตัวแก้ไข "/r" (สำหรับการแทนที่แบบไม่ทำลาย) ได้รับการบันทึกไว้แล้ว [เพิร์ล #119151]

· เอกสารประกอบสำหรับ "/x" และ "(?# ความคิดเห็น)" ได้รับการขยายและชี้แจงแล้ว

เบื่อ

· เอกสารได้รับการปรับปรุงในแง่ของการเปลี่ยนแปลงล่าสุดกับ regcomp.c.

เพิร์ลซับ

· ความจำเป็นในการประกาศล่วงหน้าฟังก์ชันแบบเรียกซ้ำกับต้นแบบเพื่อสำหรับต้นแบบ
ที่จะได้รับเกียรติในการเรียกซ้ำได้รับการบันทึกไว้ในขณะนี้ [เพิร์ล #2726]

· รวมรายชื่อรูทีนย่อยที่ใช้โดยการนำ Perl ไปใช้งานแล้ว [เพิร์ล
#77680]

กับดัก

· ขณะนี้มีส่วน JavaScript

เปอร์ลูนิโค้ด

· เอกสารได้รับการปรับปรุงเพื่อแสดงถึงการเปลี่ยนแปลง "Bidi_Class" ใน Unicode 6.3

เพิร์ลวาร์

· ส่วนใหม่ที่อธิบายปัญหาด้านประสิทธิภาพของ $`, $& และ $' รวมถึง
มีการเพิ่มวิธีแก้ปัญหาและการเปลี่ยนแปลงใน Perl เวอร์ชันต่างๆ

· ชื่อตัวแปรภาษาอังกฤษสามชื่อที่ได้รับการบันทึกไว้นานแล้วแต่ไม่มีอยู่จริง
ถูกลบออกจากเอกสาร สิ่งเหล่านี้คือ $OLD_PERL_VERSION, $OFMT และ
$ARRAY_BASE

(อันที่จริง "OLD_PERL_VERSION" ทำ มีอยู่โดยเริ่มจากการแก้ไขนี้ แต่ยังคงอยู่
ไม่มีเอกสารจนถึง perl 5.22.0.)

เพิร์ล

· ปัญหาหลายอย่างในตัวอย่าง "MY_CXT" ได้รับการแก้ไขแล้ว

การวินิจฉัย


มีการเพิ่มหรือเปลี่ยนแปลงต่อไปนี้ในเอาต์พุตการวินิจฉัย รวมถึงคำเตือน
และข้อความแสดงข้อผิดพลาดร้ายแรง สำหรับรายการข้อความวินิจฉัยทั้งหมด โปรดดูที่ perldiag

ใหม่ การวินิจฉัย
ใหม่ ข้อผิดพลาด

· ลบอาร์กิวเมนต์คือ index/value array slice ใช้ array slice

(F) คุณใช้ไวยากรณ์สไลซ์อาร์เรย์ดัชนี/ค่า (%array[...]) เป็นอาร์กิวเมนต์ในการ "ลบ"
คุณอาจหมายถึง @array[...] ด้วยสัญลักษณ์ @ แทน

· ลบอาร์กิวเมนต์เป็นคีย์/ค่าแฮชสไลซ์ ใช้แฮชสไลซ์

(F) คุณใช้ไวยากรณ์สไลซ์แฮชคีย์/ค่า (%hash{...}) เป็นอาร์กิวเมนต์ในการ "ลบ"
คุณอาจหมายถึง @hash{...} ด้วยสัญลักษณ์ @ แทน

· ไม่รองรับค่าคงที่รายการเวทย์มนตร์

(F) คุณกำหนดอาร์เรย์เวทย์มนตร์ให้กับองค์ประกอบซ่อนแล้วลองใช้
รูทีนย่อยจากสล็อตเดียวกัน คุณกำลังขอให้ Perl ทำสิ่งที่มันไม่สามารถทำได้
รายละเอียดอาจมีการเปลี่ยนแปลงระหว่างเวอร์ชัน Perl

· เพิ่มการตั้งค่า $/ ในการอ้างอิง %s เป็นสิ่งต้องห้าม

ใหม่ คำแนะนำ:

· %s อ้างอิงอยู่ระหว่างการทดลอง:

คุณลักษณะ "กำหนดเส้นทางอัตโนมัติ" อยู่ในขั้นทดลอง

ตั้งแต่ v5.14.0 เป็นต้นไป คุณสามารถใช้ push, pop, keys และ built-in . อื่นๆ ได้
ไม่ได้ทำงานเฉพาะในประเภทรวมเท่านั้น แต่ยังรวมถึงการอ้างอิงถึงพวกมันด้วย คุณสมบัติไม่ได้
ปรับใช้ตามข้อกำหนดเดิมที่ตั้งใจไว้ และตอนนี้อาจกลายเป็นสิ่งซ้ำซ้อนกับ
postfix ยกเลิกการอ้างอิง มันถูกจัดประเภทเป็นคุณลักษณะทดลองเสมอและ
ใน v5.20.0 จะมีการเตือนเช่นนี้

คำเตือนจะออกในเวลารวบรวมเมื่อตรวจพบการดำเนินการเหล่านี้

ไม่ถ้า $] >= 5.01908, คำเตือน => "experimental::autoderef";

พิจารณาแทนที่การใช้คุณสมบัติเหล่านี้เนื่องจากอาจเปลี่ยนพฤติกรรม
อีกครั้งก่อนที่จะมีเสถียรภาพ

· เลิกใช้ลำดับของช่องว่างหลายช่องในนิยามนามแฝงของชื่ออักขระแล้ว

การต่อท้าย white-space ในนิยามนามแฝงของ charnames เลิกใช้แล้ว

คำเตือนการเลิกใช้งานสองรายการที่เกี่ยวข้องกับ "\N{...}" ถูกนำมาใช้อย่างไม่ถูกต้อง พวกเขา
ไม่ได้เตือนโดยปริยาย (ตอนนี้มีแล้ว) และไม่อาจทำให้เสียชีวิตได้ผ่าน "ใช้คำเตือน
FATAL => 'เลิกใช้แล้ว'" (ตอนนี้ทำได้)

· ต้นแบบแอตทริบิวต์(%s) ละทิ้งแอตทริบิวต์ต้นแบบก่อนหน้าในย่อยเดียวกัน

(เบ็ดเตล็ด) ประกาศย่อยเป็น "sub foo : prototype(A) : prototype(B) {}" สำหรับ
ตัวอย่าง. เนื่องจากแต่ละหน่วยย่อยสามารถมีต้นแบบได้เพียงตัวเดียว การประกาศก่อนหน้านี้จึงเป็น
ทิ้งในขณะที่ใช้อันสุดท้าย

· อักขระ \0 ไม่ถูกต้องใน %s สำหรับ %s: %s\0%s

(W syscalls) ฝังตัว \0 อักขระในชื่อพาธหรืออาร์กิวเมนต์การเรียกระบบอื่นๆ
แจ้งเตือนเมื่อ 5.20 น. ส่วนหลัง \0 ก่อนหน้านี้ถูกละเว้นโดยระบบ
โทร

· จับคู่รหัสที่ไม่ใช่ Unicode ชี้ 0x%X เทียบกับคุณสมบัติ Unicode อาจไม่สามารถพกพาได้

สิ่งนี้แทนที่ข้อความ "จุดโค้ด 0x%X ไม่ใช่ Unicode การจับคู่ \p{} ทั้งหมดล้มเหลว all
\P{} จับคู่สำเร็จ"

· ไม่มี ']' ในต้นแบบสำหรับ %s : %s

(W crimeproto) การจัดกลุ่มเริ่มต้นด้วย "[" แต่ไม่เคยปิดด้วย "]"

· ปัญหาลำดับความสำคัญที่เป็นไปได้กับตัวดำเนินการควบคุมการไหล

(ไวยากรณ์ W) มีปัญหาที่เป็นไปได้กับการผสมตัวดำเนินการควบคุมการไหล
(เช่น "return") และโอเปอเรเตอร์ที่มีลำดับความสำคัญต่ำ เช่น "หรือ" พิจารณา:

ย่อย { ส่งคืน $a หรือ $b; }

นี่คือการแยกวิเคราะห์เป็น:

ย่อย { (ส่งคืน $a) หรือ $b; }

ซึ่งมีประสิทธิภาพเพียง:

ย่อย { ส่งคืน $a; }

ใช้วงเล็บหรือตัวแปรที่มีลำดับความสำคัญสูงของตัวดำเนินการ

โปรดทราบว่าสิ่งนี้อาจถูกทริกเกอร์สำหรับโครงสร้างเช่น:

ย่อย { 1 ถ้าตาย; }

· Postfix dereference เป็นการทดลอง

(S Experimental::postderef) คำเตือนนี้จะถูกส่งออกไปหากคุณใช้ตัวทดลอง
ไวยากรณ์การอ้างอิง postfix เพียงระงับคำเตือนหากคุณต้องการใช้
คุณลักษณะ แต่รู้ว่าในการทำเช่นนั้นคุณกำลังเสี่ยงที่จะใช้การทดลอง
คุณลักษณะที่อาจเปลี่ยนแปลงหรือลบในเวอร์ชัน Perl ในอนาคต:

ไม่มีคำเตือน "experimental::postderef";
ใช้คุณสมบัติ "postderef", "postderef_qq";
$ref->$*;
$aref->@*;
$aref->@[@indices];
... ฯลฯ ...

· ต้นแบบ '%s' ถูกแทนที่ด้วยแอตทริบิวต์ 'prototype(%s)' ใน %s

(ต้นแบบ W) มีการประกาศต้นแบบทั้งในวงเล็บหลังชื่อย่อยและ
ผ่านแอตทริบิวต์ต้นแบบ ต้นแบบในวงเล็บไม่มีประโยชน์ เนื่องจากจะ
ถูกแทนที่ด้วยต้นแบบจากแอตทริบิวต์ก่อนที่จะใช้งาน

· ค่าสเกลาร์ @%s[%s] เขียนได้ดีกว่า $%s[%s]

(ไวยากรณ์ W) ในบริบทสเกลาร์ คุณได้ใช้ดัชนีอาร์เรย์/สไลซ์ค่า (ระบุโดย %)
เพื่อเลือกองค์ประกอบเดียวของอาร์เรย์ โดยทั่วไป จะดีกว่าถ้าขอสเกลาร์
ค่า (ระบุด้วย $) ความแตกต่างคือ $foo[&bar] ทำตัวเหมือน a . เสมอ
สเกลาร์ทั้งในค่าที่ส่งคืนและเมื่อประเมินอาร์กิวเมนต์ในขณะที่
%foo[&bar] จัดเตรียมบริบทรายการให้กับตัวห้อย ซึ่งสามารถทำสิ่งแปลก ๆ if
คุณคาดหวังเพียงหนึ่งตัวห้อย เมื่อถูกเรียกในบริบทรายการ จะส่งกลับ
ดัชนี (สิ่งที่ &bar ส่งคืน) นอกเหนือจากค่า

· ค่าสเกลาร์ @%s{%s} เขียนได้ดีกว่า $%s{%s}

(ไวยากรณ์ W) ในบริบทสเกลาร์ คุณได้ใช้แฮชคีย์/ค่าสไลซ์ (ระบุโดย %) เพื่อ
เลือกองค์ประกอบเดียวของแฮช โดยทั่วไป จะดีกว่าถ้าขอค่าสเกลาร์
(ระบุด้วย $) ความแตกต่างคือ $foo{&bar} ทำตัวเหมือนสเกลาร์เสมอ
ทั้งในค่าที่ส่งคืนและเมื่อประเมินอาร์กิวเมนต์ ขณะที่ @foo{&bar} และ
ให้บริบทรายการแก่ตัวห้อยซึ่งสามารถทำสิ่งแปลก ๆ ได้หากคุณ
คาดว่าจะมีตัวห้อยเพียงตัวเดียว เมื่อเรียกในบริบทของรายการก็จะส่งคืนคีย์ใน
บวกกับมูลค่า

· เลิกใช้การตั้งค่า $/ เป็นการอ้างอิงถึง %s ในรูปแบบของ slurp โดยถือเป็น undef

· ทางออกที่ไม่คาดคิด %u

(S) ทางออก () ถูกเรียกหรือสคริปต์เสร็จสิ้นอย่างงดงามเมื่อ
"PERL_EXIT_WARN" ถูกตั้งค่าใน "PL_exit_flags"

· ความล้มเหลวในการออกโดยไม่คาดคิด %d

(S) จับไม่ได้ ตาย () ถูกเรียกเมื่อมีการตั้งค่า "PERL_EXIT_WARN" ใน "PL_exit_flags"

· เลิกใช้อักขระควบคุมตามตัวอักษรในชื่อตัวแปรแล้ว

(D เลิกใช้แล้ว) การใช้อักขระควบคุมตามตัวอักษรในแหล่งที่มาเพื่ออ้างถึง ^FOO
ตัวแปร เช่น $^X และ ${^GLOBAL_PHASE} เลิกใช้แล้ว มีผลกับโค้ดเท่านั้น
เช่น $\cT โดยที่ \cT เป็นตัวควบคุม (เช่น "SOH") ในซอร์สโค้ด: ${"\cT"} และ $^T
ยังคงถูกต้อง

· การใช้ตัวแก้ไขความโลภโดยเปล่าประโยชน์

การแก้ไข [Perl #42957]

การเปลี่ยนแปลง ไปยัง ที่มีอยู่ การวินิจฉัย
· คำเตือนและข้อผิดพลาดจากเอ็นจิ้น regexp ได้รับการล้าง UTF-8 แล้ว

· ข้อความแสดงข้อผิดพลาด "Unknown switch condition" มีการเปลี่ยนแปลงเล็กน้อย ข้อผิดพลาดนี้
ทริกเกอร์เมื่อมีเงื่อนไขที่ไม่รู้จักในเงื่อนไข "(?(foo))" ข้อผิดพลาด
ข้อความที่ใช้อ่าน:

ไม่ทราบเงื่อนไขสวิตช์ (?(%s ใน regex;

แต่สิ่งที่ %s อาจเป็นส่วนใหญ่ขึ้นอยู่กับโชค สำหรับ "(?(foobar))" คุณอาจเคยเห็น
"fo" หรือ "f" สำหรับอักขระ Unicode โดยทั่วไปคุณจะได้รับสตริงที่เสียหาย ดิ
ข้อความถูกเปลี่ยนเป็นอ่าน:

สภาพสวิตช์ที่ไม่รู้จัก (?(...)) ใน regex;

นอกจากนี้ เครื่องหมาย '<-- HERE' ในข้อผิดพลาดจะชี้ไปยังจุดที่ถูกต้องใน
นิพจน์ทั่วไป

· คำเตือน "%s "\x%X" ไม่จับคู่กับ Unicode ถูกแสดงรายการเป็นระดับความรุนแรงอย่างถูกต้องแล้ว
เตือนมากกว่าเป็นข้อผิดพลาดร้ายแรง

· ภายใต้สถานการณ์ที่ไม่ค่อยเกิดขึ้น อาจมี "ไม่สามารถบังคับ REF แบบอ่านอย่างเดียวให้เป็นสตริงได้"
แทนที่จะเป็น "การปรับเปลี่ยนค่าแบบอ่านอย่างเดียว" ตามปกติ ข้อผิดพลาดทางเลือกนี้
ข้อความถูกลบ

· "การใช้ * ที่กำกวมเป็นโอเปอเรเตอร์ *": สิ่งนี้และคำเตือนที่คล้ายกันเกี่ยวกับ "%" และ
"&" เคยเกิดขึ้นในบางกรณีที่ไม่มีตัวดำเนินการประเภทที่อ้างถึง
ดังนั้นคำเตือนจึงผิดอย่างสมบูรณ์ สิ่งนี้ได้รับการแก้ไขแล้ว [perl #117535, #76910]

· คำเตือนเกี่ยวกับรูทีนย่อยที่มีรูปแบบไม่ถูกต้องมีความสอดคล้องกันมากขึ้นในวิธีที่
มีการแสดงต้นแบบ คำเตือนเหล่านี้บางส่วนจะตัดทอนต้นแบบที่มี
ค่าว่าง ในกรณีอื่นคำเตือนหนึ่งจะระงับอีกคำเตือนหนึ่ง คำเตือนเกี่ยวกับสิ่งผิดกฎหมาย
อักขระในต้นแบบจะไม่พูดว่า "หลัง '_'" อีกต่อไปหากอักขระที่ไม่ดีมาก่อน
ขีดล่าง

· กฎการพับ Perl ไม่เป็นปัจจุบันสำหรับ 0x%X; โปรดใช้ยูทิลิตี้ perlbug เพื่อ
รายงาน; ใน regex; ทำเครื่องหมายโดย <-- ที่นี่ใน m/%s/

ขณะนี้ข้อความนี้อยู่ในหมวดหมู่ regexp เท่านั้น และไม่อยู่ในหมวดหมู่ที่เลิกใช้งานแล้ว
ยังคงเป็นคำเตือนเริ่มต้น (เช่น รุนแรง) [perl #89648]

· %%s[%s] ในบริบทสเกลาร์เขียนเป็น $%s[%s] ได้ดีกว่า

คำเตือนนี้เกิดขึ้นสำหรับ %array[$index] หรือ %hash{key} ใดๆ ที่ทราบว่าเป็นสเกลาร์
บริบท ณ เวลารวบรวม ก่อนหน้านี้มีคำว่า "ค่าสเกลาร์ %%s[%s] ดีกว่า
เขียนเป็น $%s[%s]"

· ไม่รู้จักเงื่อนไขสวิตช์ใน regex; ทำเครื่องหมายโดย <-- ที่นี่ใน m/%s/:

คำอธิบายสำหรับการวินิจฉัยนี้ได้รับการขยายให้ครอบคลุมทุกกรณีที่
คำเตือนอาจเกิดขึ้น ปัญหาเกี่ยวกับตำแหน่งของตัวบ่งชี้ลูกศรก็เช่นกัน
แก้ไขแล้ว

· ข้อความแสดงข้อผิดพลาดสำหรับ "my($a?$b$c)" และ "my(do{})" กล่าวถึง "conditional"
expression" และ "do block" ตามลำดับ แทนที่จะอ่านว่า 'Can't ประกาศ null
การดำเนินการใน "ของฉัน"'

· เมื่อ "use re "debug" เรียกใช้งาน regex ที่มี backreference การดีบัก
เอาต์พุตจะแสดงว่าสตริงใดที่ตรงกัน

· ข้อความแสดงข้อผิดพลาดที่ร้ายแรงในขณะนี้ "อักขระที่ตามหลัง "\c" ต้องเป็น ASCII" ได้รับการเปลี่ยนคำใหม่
เนื่องจาก "อักขระที่ตามหลัง "\c" ต้องเป็น ASCII ที่พิมพ์ได้" เพื่อเน้นย้ำว่าใน "\cX", X
จะต้องเป็น พิมพ์ได้ (ไม่ควบคุม) อักขระ ASCII

ประโยชน์ การเปลี่ยนแปลง


a2p

· ความผิดพลาดที่อาจเกิดขึ้นจากข้อผิดพลาดแบบ off-by-one เมื่อพยายามเข้าถึงก่อนการเริ่มต้น
ของบัฟเฟอร์ได้รับการแก้ไขแล้ว [เพิร์ล #120244]

bisect.pl

เครื่องมือไบเซกชัน git การย้าย/bisect.pl มีการปรับปรุงหลายอย่าง

มีให้เป็นส่วนหนึ่งของการแจกจ่ายต้นทาง แต่ไม่ได้ติดตั้งเนื่องจากไม่ใช่
มีอยู่ในตัวเองเนื่องจากอาศัยการเรียกใช้จากภายในการชำระเงินด้วยคอมไพล์ โปรดทราบว่ามัน
ไม่พยายามแก้ไขการทดสอบ แก้ไขข้อบกพร่องรันไทม์ หรือทำสิ่งที่มีประโยชน์ในการติดตั้ง -
จุดประสงค์คือเพื่อทำการเปลี่ยนแปลงเล็กน้อยเพื่อให้มีการแก้ไขทางประวัติศาสตร์ที่น่าสนใจในการสร้าง
และวิ่งให้ใกล้เคียงกับ "เหมือนเดิม" มากที่สุด และทำให้ "git bisect" ใช้งานง่าย

· สามารถเลือกเรียกใช้กรณีทดสอบด้วยการหมดเวลาได้

· ตอนนี้สามารถเรียกใช้ในสถานที่ในการชำระเงินแบบ Clean git ได้แล้ว

· สามารถเรียกใช้กรณีทดสอบภายใต้ "valgrind"

· สามารถใช้แพตช์และการแก้ไขที่ผู้ใช้ให้มากับการชำระเงินต้นทางก่อนสร้าง

· ตอนนี้มีการแก้ไขเพื่อให้สามารถสร้างช่วงประวัติศาสตร์ของ bleadperl ได้มากขึ้น ซึ่ง
สามารถเป็นประโยชน์ในการระบุที่มาของจุดบกพร่องหรือการเปลี่ยนแปลงพฤติกรรม

find2perl

· find2perl ตอนนี้จัดการ "?" สัญลักษณ์แทนอย่างถูกต้อง [เพิร์ล #113054]

เพิร์ลบั๊ก

· เพิร์ลบั๊ก ตอนนี้มีตัวเลือก "-p" สำหรับแนบแพตช์พร้อมรายงานข้อบกพร่อง

· perlbug ได้รับการแก้ไขเพื่อจัดหาเทมเพลตรายงานด้วย CRLF line ending on
วินโดว์. [เพิร์ล #121277 ]

· ตอนนี้ perlbug ตั้งสมมติฐานเกี่ยวกับการเข้ารหัสรายงานให้น้อยที่สุด
ซึ่งอาจมีการเปลี่ยนแปลงในอนาคตโดยถือว่า UTF-8 เป็นค่าเริ่มต้น แต่อนุญาตให้ผู้ใช้
แทนที่.

องค์ประกอบ และ การรวบรวม


· Makefile.PL สำหรับ SDBM_File ตอนนี้สร้างสิ่งที่ดีกว่า Makefileซึ่งหลีกเลี่ยงการแข่งขัน
สภาพในระหว่างการสร้างแบบขนานซึ่งอาจทำให้บิลด์ล้มเหลว นี้เป็น
ปัญหาการสร้างคู่ขนานที่ทราบล่าสุด (บนแพลตฟอร์ม *nix) ดังนั้นเราจึงเชื่อว่าa
Parallel make ควรปราศจากข้อผิดพลาดเสมอ

· ติดตั้งperl และ ช่างติดตั้งการจัดการตัวเลือกของได้รับการปรับโครงสร้างใหม่เพื่อใช้ Getopt::Long
ทั้งสองถูกใช้โดย Makefile "ติดตั้ง" เป้าหมายและไม่ได้ติดตั้งดังนั้นสิ่งเหล่านี้
การเปลี่ยนแปลงจะมีผลกับสคริปต์การติดตั้งแบบกำหนดเองเท่านั้น

· ตัวเลือกตัวอักษรเดี่ยวตอนนี้ก็มีชื่อยาวเช่นกัน

· ตัวเลือกที่ไม่ถูกต้องจะถูกปฏิเสธในขณะนี้

· อาร์กิวเมนต์บรรทัดคำสั่งที่ไม่ใช่ตัวเลือกจะถูกปฏิเสธ

· ตอนนี้แต่ละคนมีตัวเลือก "--ช่วยเหลือ" เพื่อแสดงข้อความการใช้งาน

ลักษณะการทำงานสำหรับการร้องขอเอกสารที่ถูกต้องทั้งหมดจะไม่เปลี่ยนแปลง

· หากเป็นไปได้ บิวด์ในตอนนี้จะหลีกเลี่ยงการเรียกซ้ำของ ทำ เมื่อสร้างบริสุทธิ์-
ส่วนขยาย Perl โดยไม่ต้องลบความเท่าเทียมกันออกจากบิลด์ ปัจจุบันประมาณ80
ส่วนขยายสามารถประมวลผลได้โดยตรงโดย make_ext.pl เครื่องมือ หมายความว่า 80
คำวิงวอนของ ทำ และ 160 อัญเชิญของ มินิเพิร์ล ไม่ได้ทำอีกต่อไป

· ระบบบิลด์ทำงานอย่างถูกต้องเมื่อคอมไพล์ภายใต้ GCC หรือ Clang ด้วย link-time
เปิดใช้งานการเพิ่มประสิทธิภาพ (ตัวเลือก "-flto") [เพิร์ล #113022]

· ชื่อฐานห้องสมุดที่แตกต่างด้วย "d_libname_unique"

เมื่อรวบรวม Perl ด้วยตัวเลือกนี้ ไฟล์ไลบรารีสำหรับโมดูล XS จะมีชื่อว่า
บางสิ่งที่ "ไม่เหมือนใคร" - ตัวอย่างเช่น Hash/Util/Util.so กลายเป็น
Hash/Util/PL_Hash__Util.so. ลักษณะการทำงานนี้คล้ายกับสิ่งที่เกิดขึ้นในปัจจุบัน
VMS และทำหน้าที่เป็นพื้นฐานสำหรับพอร์ต Android

· ตัวเลือก "sysroot" เพื่อระบุไดเร็กทอรีรากแบบลอจิคัลภายใต้ gcc และ clang

เมื่อสร้างด้วยชุดตัวเลือกนี้ ทั้ง Configure และคอมไพเลอร์จะค้นหาทั้งหมด
ส่วนหัวและไลบรารีภายใต้ sysroot ใหม่นี้ แทนที่จะเป็น /.

วิธีนี้จะช่วยประหยัดเวลาได้มากหากคอมไพล์ข้ามระบบ แต่ยังสามารถช่วยสร้างเนทีฟได้หาก
ไฟล์ของ toolchain ของคุณมีตำแหน่งที่ไม่ได้มาตรฐาน

· มีการปรับปรุงรูปแบบการคอมไพล์ข้าม มีตัวเลือกใหม่หลายตัวและบางตัว
การเปลี่ยนแปลงที่เข้ากันไม่ได้แบบย้อนกลับ:

ตอนนี้เราสร้างไบนารีสำหรับ miniperl และ generate_uudmap เพื่อใช้บนโฮสต์แทน
มากกว่าเรียกใช้ miniperl ทุกครั้งที่เรียกไปที่เป้าหมาย นี่หมายความว่าขาด 'ทำการทดสอบ'
เราไม่จำเป็นต้องเข้าถึงระบบเป้าหมายอีกต่อไปเมื่อกำหนดค่าเสร็จสิ้น คุณสามารถให้
ไบนารีที่สร้างไว้แล้วผ่านตัวเลือก "hostperl" และ "hostgenerate" เพื่อกำหนดค่า

นอกจากนี้ หากกำหนดเป้าหมายแพลตฟอร์ม EBCDIC จากโฮสต์ ASCII หรือในทางกลับกัน คุณจะ
ต้องรัน Configure ด้วย "-Uhostgenerate" เพื่อระบุว่า generate_uudmap ควร
จะวิ่งตามเป้าหมาย

สุดท้ายยังมีวิธีให้ Configure สิ้นสุดก่อนกำหนดทันทีหลังจากสร้าง
ไบนารีของโฮสต์ โดยการคอมไพล์ข้ามโดยไม่ต้องระบุ "targethost"

การเปลี่ยนแปลงที่เข้ากันไม่ได้รวมถึงการไม่ใช้ xconfig.h, xlib หรือ Cross.pm อีกต่อไป ดังนั้น
ไฟล์ปรับแต่งกระป๋องและ Makefiles จะต้องได้รับการอัปเดต

· ที่เกี่ยวข้องกับข้างต้น ตอนนี้มีวิธีการระบุตำแหน่งของ sh (or
เทียบเท่า) บนระบบเป้าหมาย: "targetsh"

ตัวอย่างเช่น Android มี sh ใน /system/bin/sh ดังนั้นหากคอมไพล์ข้ามจาก more
ระบบ Unixy ปกติพร้อม sh in bin / sh /, "targetsh" จะกลายเป็น /system/bin/sh, และ
"sh" เป็น /bin/sh.

· โดยค่าเริ่มต้น, gcc 4.9 ทำการเพิ่มประสิทธิภาพบางอย่างที่ทำลาย Perl ดิ -fwrapv ตัวเลือก
ปิดใช้งานการเพิ่มประสิทธิภาพเหล่านั้น (และอาจเป็นอย่างอื่น) ดังนั้นสำหรับ gcc 4.3 และใหม่กว่า (ตั้งแต่
อาจมีปัญหาที่คล้ายกันซึ่งแฝงตัวอยู่ในเวอร์ชันเก่าเช่นกัน แต่ -fwrapv คือ
เสียก่อน 4.3 และการเพิ่มประสิทธิภาพอาจจะไม่หายไป) กำหนดค่า ตอนนี้เพิ่ม
-fwrapv เว้นแต่ผู้ใช้ร้องขอ -fno-wrapvซึ่งปิดการใช้งาน -fwrapv,หรือ
-fsanitize=ไม่ได้กำหนดซึ่งทำให้น้ำล้น -fwrapv ละเว้นข้อผิดพลาดรันไทม์
[เพิร์ล #121505 ]

การทดสอบ


· การสร้างเป้าหมาย "test.valgrind" ช่วยให้การทดสอบทำงานแบบคู่ขนานกันได้ เป้าหมายนี้
อนุญาตให้ชุดทดสอบของ Perl ทำงานภายใต้ Valgrind ซึ่งตรวจจับ C . บางประเภท
ข้อผิดพลาดในการเขียนโปรแกรมแม้ว่าจะมีค่าใช้จ่ายสูงในเวลาทำงาน บนฮาร์ดแวร์ที่เหมาะสม
อนุญาตให้ใช้กรงเล็บแบบขนานกลับค่าใช้จ่ายเพิ่มเติมจำนวนมาก [เพิร์ล #121431]

·การทดสอบต่างๆใน ที/พอร์ต/ จะไม่ถูกข้ามอีกต่อไปเมื่อ perl .git ไดเรกทอรีคือ
นอกต้นไม้ Perl และชี้ไปที่ $GIT_DIR [เพิร์ล #120505]

· ชุดทดสอบจะไม่ล้มเหลวอีกต่อไปเมื่อเชลล์โต้ตอบของผู้ใช้รักษา $PWD
ตัวแปรสภาพแวดล้อม แต่ bin / sh / ใช้สำหรับการทดสอบการทำงานไม่ได้

ระบบปฏิบัติการ ระบบขอใช้บริการ


ใหม่ แพลตฟอร์ม
Android
ตอนนี้ Perl สามารถสร้างสำหรับ Android ได้แล้วไม่ว่าจะโดยกำเนิดหรือผ่านการคอมไพล์ข้าม for
ทั้งสามสถาปัตยกรรมที่มีอยู่ในปัจจุบัน (ARM, MIPS และ x86) ในหลากหลาย
รุ่นที่

บิตริก
เพิ่มการรองรับการคอมไพล์สำหรับ Bitrig ซึ่งเป็นทางแยกของ OpenBSD

ฟรีมินท์
เพิ่มการรองรับ FreeMiNT ซึ่งเป็นระบบปฏิบัติการโอเพ่นซอร์สฟรีสำหรับระบบ Atari ST และ
ผู้สืบทอดตาม MiNT ดั้งเดิมที่ Atari รับเลี้ยงอย่างเป็นทางการ

Synology
Synology จัดส่งกล่อง NAS ด้วยลีนุกซ์แบบลีน (DSM) ในราคาถูก
ซีพียู (เช่น Marvell Kirkwood mv6282 - ARMv5tel หรือ Freescale QorIQ P1022 ppc -
e500v2) ไม่ได้มีไว้สำหรับเวิร์กสเตชันหรือการพัฒนา กล่องเหล่านี้ควรสร้างตอนนี้ ดิ
ปัญหาพื้นฐานคือตำแหน่งที่ไม่ได้มาตรฐานสำหรับเครื่องมือ

ยกเลิก แพลตฟอร์ม
"เอสฟีโอ"
รหัสที่เกี่ยวข้องกับการสนับสนุนระบบ I/O "sfio" ถูกลบออก

Perl 5.004 เพิ่มการรองรับเพื่อใช้ API ดั้งเดิมของ "sfio", I/O ที่ปลอดภัย/รวดเร็วของ AT&T
ห้องสมุด. รหัสนี้ยังคงสร้างด้วย v5.8.0 แม้ว่าจะมีการทดสอบการถดถอยหลายครั้งที่ล้มเหลว
แต่ถูกทำลายโดยไม่ได้ตั้งใจก่อนปล่อย v5.8.1 ซึ่งหมายความว่าใช้งานไม่ได้
ใน Perl เวอร์ชันใดก็ตามที่เปิดตัวตั้งแต่นั้นมา ตลอดทศวรรษที่ผ่านมา เราไม่พบปัญหาใดๆ เลย
รายงานเกี่ยวกับเรื่องนี้ จึงเป็นที่ชัดเจนว่าไม่มีใครใช้ฟังก์ชันนี้ในใดๆ
เวอร์ชันของ Perl ที่ยังคงรองรับในทุกระดับ

AT&T 3b1
กำหนดค่าการสนับสนุนสำหรับ 3b1 หรือที่เรียกว่า AT&T Unix PC (และ AT&T . ที่คล้ายกัน
7300) ถูกลบออก

ดีจี/เอ็กซ์
DG/UX เป็น Unix ที่จำหน่ายโดย Data General รุ่นล่าสุดออกเมื่อเดือนเมษายน พ.ศ. 2001 เท่านั้น
ทำงานบนฮาร์ดแวร์ของ Data General

EBCDI
ในกรณีที่ไม่มีรายงานแหล่งที่มาของควันเป็นประจำ รหัสที่ตั้งใจไว้เพื่อรองรับเจ้าของภาษา
แพลตฟอร์ม EBCDIC จะถูกลบออกจาก Perl ก่อน 5.22.0

เฉพาะแพลตฟอร์ม หมายเหตุ :
Cygwin
· รับ () บนแฮนเดิลที่เชื่อมต่อจะเติมที่อยู่ผู้ส่งที่ส่งคืนด้วย
สิ่งที่เกิดขึ้นจะอยู่ในบัฟเฟอร์การทำงาน รับ () ตอนนี้ใช้วิธีแก้ปัญหา
คล้ายกับ Win32 รับ () wrapper และส่งคืนสตริงว่างเมื่อ reCVfrom(2)
ไม่แก้ไขความยาวของที่อยู่ที่ให้มา [เพิร์ล #118843]

· แก้ไขข้อผิดพลาดในการสร้างใน cygwin.c บน Cygwin 1.7.28

ขณะนี้การทดสอบจัดการกับข้อผิดพลาดที่เกิดขึ้นเมื่อ "cygserver" ไม่ทำงาน

GNU / Hurd
ไลบรารีความเข้ากันได้ของ BSD "libbsd" ไม่จำเป็นสำหรับบิลด์อีกต่อไป

ลินุกซ์
ไฟล์คำใบ้จะค้นหา "libgdbm_compat" เฉพาะเมื่อต้องการ "libgdbm" เองด้วย
อดีตจะไม่มีประโยชน์หากไม่มีสิ่งหลังและในบางกรณีรวมถึง
สามารถป้องกันการสร้างได้จริง

Mac OS
ระบบบิลด์ตอนนี้ใช้การตั้งค่า "ld" ที่ผู้ใช้เรียกใช้ กำหนดค่า.

เที่ยงคืน BSD
"objformat" ถูกลบออกจาก MidnightBSD เวอร์ชัน 0.4-RELEASE และเคย
เลิกใช้แล้วในเวอร์ชันก่อนหน้า ทำให้สภาพแวดล้อมการสร้างผิดพลาด
กำหนดค่าสำหรับ "a.out" มากกว่า "เอลฟ์" สิ่งนี้ได้รับการแก้ไขแล้ว

แพลตฟอร์มแบบผสม
โค้ดที่รองรับการทำงาน "pack" และ "unpack" บนแพลตฟอร์ม endian แบบผสมได้รับ
ลบออก. เราเชื่อว่า Perl ไม่สามารถสร้างบน endian แบบผสมได้มานานแล้ว
สถาปัตยกรรม (เช่น PDP-11) ดังนั้นเราจึงไม่คิดว่าการเปลี่ยนแปลงนี้จะส่งผลกระทบต่อใด ๆ
แพลตฟอร์มที่สามารถสร้าง v5.18.0 ได้

VMS
· คุณลักษณะ "PERL_ENV_TABLES" เพื่อควบคุมประชากรของ %ENV เมื่อเริ่มต้น Perl
เสียใน Perl 5.16.0 แต่ตอนนี้ได้รับการแก้ไขแล้ว

·ข้ามการตรวจสอบการเข้าถึงบนรีโมทใน โอเพ่นไดร์(). [เพิร์ล #121002]

· ตรวจหาเมตาคาแรคเตอร์ glob ในพาธที่ส่งคืนโดยโอเปอเรเตอร์ "glob()" has
ถูกแทนที่ด้วยการตรวจสอบอักขระตัวแทน VMS สิ่งนี้ช่วยประหยัดได้อย่างมาก
จำนวนของ "lstat()" ที่ไม่จำเป็นทำให้การดำเนินการ glob ง่าย ๆ กลายเป็น
เร็วขึ้น 60-80%

Win32
· "เปลี่ยนชื่อ" และ "ลิงก์" บน Win32 ตอนนี้ตั้งค่า $! ถึง ENOSPC และ EDQUOT ตามความเหมาะสม
[เพิร์ล #119857]

·ตัวเลือก makefile BUILD_STATIC และ ALL_STATIC สำหรับเชื่อมโยงบางส่วนหรือ (เกือบ) ทั้งหมด
ส่วนขยายแบบคงที่ (ใน perl520.dll และใน perl-static.exe แยกต่างหากด้วย)
ถูกทำลายสำหรับการสร้าง MinGW ตอนนี้ได้รับการแก้ไขแล้ว

นอกจากนี้ ตัวเลือก ALL_STATIC ยังได้รับการปรับปรุงให้รวม Encode และ Win32 . ด้วย
ส่วนขยาย (สำหรับทั้งบิลด์ VC++ และ MinGW)

· เพิ่มการรองรับการสร้างด้วย Visual C++ 2013 แล้ว ขณะนี้มีสอง
ความล้มเหลวในการทดสอบที่เป็นไปได้ (ดู "การทดสอบ Perl บน Windows" ใน perlwin32) ซึ่งจะ
หวังว่าจะได้รับการแก้ไขในไม่ช้า

· เพิ่มการสนับสนุนทดลองสำหรับการสร้างด้วย Intel C++ Compiler แล้ว ดิ
nmake makefile (win32/Makefile) และ dmake makefile (win32/makefile.mk) ได้
ใช้แล้ว. "การทดสอบ nmake" จะไม่ผ่านในเวลานี้เนื่องจาก cpan/CGI/t/url.t.

· ฆ่าต้นไม้กระบวนการด้วย "ฆ่า" ใน perlfunc และสัญญาณลบถูกทำลาย
เริ่มใน 5.18.0. ในจุดบกพร่องนี้ "kill" จะคืนค่า 0 เสมอสำหรับสัญญาณเชิงลบ
แม้กระทั่งสำหรับ PID ที่ถูกต้อง และไม่มีกระบวนการใดที่ยุติลง สิ่งนี้ได้รับการแก้ไขแล้ว [perl
#121230].

· เวลาที่ใช้ในการสร้าง Perl บน Windows ลดลงค่อนข้างมาก (เวลา
เงินฝากออมทรัพย์ในภูมิภาค 30-40% มักจะเห็น) โดยการลดจำนวน,
มักจะล้มเหลว I/O เรียกใช้ "require()" แต่ละรายการ (for miniperl.exe เท่านั้น). [เพิร์ล
#121119 ]

· ประมาณ 15 นาทีของการไม่ได้ใช้งานการนอนหลับถูกลบออกจากการทำงาน "ทำการทดสอบ" เนื่องจาก
ข้อผิดพลาดที่ตัวตรวจสอบการหมดเวลาที่ใช้สำหรับการทดสอบไม่สามารถยกเลิกได้เมื่อ
การทดสอบเสร็จสมบูรณ์ และหมดเวลาหมดเวลาก่อนที่จะเรียกใช้การทดสอบครั้งต่อไป
ไฟล์. [เพิร์ล #121395 ]

· บน Perl ที่สร้างขึ้นโดยไม่มี pseudo-fork (การสร้าง pseudo-fork ไม่ได้รับผลกระทบจากสิ่งนี้
ข้อผิดพลาด) การฆ่าแผนผังกระบวนการด้วย "kill()" และสัญญาณลบส่งผลให้
"kill()" คืนค่าที่ส่งคืน ตัวอย่างเช่น ถ้า "kill()" ฆ่า 1 โปรเซส
tree PID มันจะคืนค่า 0 แทนที่จะเป็น 1 และถ้า "kill()" ผ่านไป 2 ไม่ถูกต้อง
จากนั้น PID ก็คืนค่า 2 แทนที่จะเป็น 0 นี่อาจเป็นกรณีตั้งแต่
คุณลักษณะการฆ่าต้นไม้กระบวนการถูกนำมาใช้ใน Win32 ตอนนี้ได้แก้ไขเป็น
ปฏิบัติตามพฤติกรรมที่บันทึกไว้ [เพิร์ล #121230
]

· เมื่อสร้าง Perl 64 บิต หน่วยความจำที่ยังไม่ได้กำหนดค่าจะอ่านใน miniperl.exeใช้แล้ว
ในระหว่างกระบวนการสร้างอาจนำไปสู่ ​​4GB wperl.exe กำลังถูกสร้างขึ้น นี้มี
ตอนนี้ได้รับการแก้ไขแล้ว (โปรดทราบว่า เพิร์ล.exe ตัวเองไม่ได้รับผลกระทบแต่ชัดเจน
wperl.exe คงจะพังหมดสิ้น) [perl #121471
]

· Perl สามารถสร้างได้ด้วย gcc เวอร์ชัน 4.8.1 จากhttp://www.mingw.org>. นี้
ก่อนหน้านี้ถูกทำลายเนื่องจากคำจำกัดความของ .ไม่ถูกต้อง DllMain() ใน Perl's แห่งหนึ่ง
ไฟล์ต้นฉบับ ก่อนหน้านี้ gcc เวอร์ชันยังได้รับผลกระทบเมื่อใช้เวอร์ชัน 4 ของ
แพ็คเกจ w32api เวอร์ชันของ gcc ใช้ได้จาก
<http://mingw-w64.sourceforge.net/>ไม่ได้รับผลกระทบ [เพิร์ล #121643
]

· สายรัดทดสอบตอนนี้ไม่มีข้อผิดพลาดเมื่อ Perl สร้างขึ้นบนไดรฟ์ FAT ด้วย
Windows OS บนไดรฟ์ NTFS [เพิร์ล #21442
]

· เมื่อทำการโคลนคอนเท็กซ์สแต็กใน ส้อม() การจำลอง Perl_cx_dup() จะพัง
การเข้าถึงข้อมูลพารามิเตอร์สำหรับรายการสแต็กบริบทที่รวม no
พารามิเตอร์ เช่นเดียวกับ "&foo;" [เพิร์ล #121721
]

· แนะนำโดย perl #113536
, หน่วยความจำรั่วในทุก ๆ
โทรไปที่ "ระบบ" และ backticks (" `` ") ใน Win32 Perls ส่วนใหญ่เริ่มต้นจาก 5.18.0
ได้รับการแก้ไขแล้ว หน่วยความจำรั่วเกิดขึ้นก็ต่อเมื่อคุณเปิดใช้งาน psuedo-fork ใน your
บิลด์ของ Win32 Perl และกำลังรันบิลด์นั้นบน Server 2003 R2 หรือระบบปฏิบัติการที่ใหม่กว่า
การรั่วไหลไม่ปรากฏบน WinXP SP3 [เพิร์ล #121676
]

วินซี
· การสร้างโมดูล XS ส่วนใหญ่ได้รับการฟื้นฟู หลายคนยังทำไม่ได้ (ยัง)
ถูกสร้างขึ้น แต่ตอนนี้มันเป็นไปได้ที่จะสร้าง Perl บน WinCE ด้วยเพียงไม่กี่
แพตช์เพิ่มเติม (ไปยัง Socket และ ExtUtils::MakeMaker) หวังว่าจะรวมเข้าด้วยกัน
ทันที

· Perl สามารถสร้างได้ในนัดเดียวโดยที่ผู้ใช้ไม่ต้องดำเนินการ WinCE โดยการเรียกใช้
"nmake -f Makefile.ce ทั้งหมด"

รองรับการสร้างด้วย EVC (Embedded Visual C++) 4 แล้ว Perl can
สร้างขึ้นโดยใช้อุปกรณ์อัจฉริยะสำหรับ Visual C++ 2005 หรือ 2008

ภายใน การเปลี่ยนแปลง


· การแสดงข้อมูลภายในมีการเปลี่ยนแปลงสำหรับตัวแปรการจับคู่ $1, $2 เป็นต้น, $`, $&,
$', ${^PREMATCH}, ${^MATCH} และ ${^POSTMATCH} ใช้หน่วยความจำน้อยกว่าเล็กน้อย หลีกเลี่ยง
การเปรียบเทียบสตริงและการแปลงตัวเลขระหว่างการค้นหา และใช้ . น้อยกว่า 23 บรรทัด
C. การเปลี่ยนแปลงนี้ไม่ควรมีผลกับโค้ดภายนอกใดๆ

· ตอนนี้อาร์เรย์ใช้ NULL ภายในเพื่อแสดงสล็อตที่ไม่ได้ใช้ แทนที่จะเป็น &PL_sv_undef
&PL_sv_undef จะไม่ถือว่าเป็นค่าพิเศษอีกต่อไป ดังนั้น av_store(av, 0, &PL_sv_undef)
จะทำให้องค์ประกอบ 0 ของอาร์เรย์นั้นเก็บสเกลาร์ที่ไม่ได้กำหนดแบบอ่านอย่างเดียว "$array[0] =
อะไรก็ตาม" จะบ่นและ "\$array[0]" จะเปรียบเทียบเท่ากับ "\undef"

· SV ส่งคืนโดย เขาSVKEY_force() ตอนนี้สะท้อนถึง UTF8ness ของ .อย่างถูกต้องแล้ว
แฮชคีย์พื้นฐานเมื่อคีย์นั้นไม่ได้จัดเก็บเป็น SV [เพิร์ล #79074]

· เลิกใช้งานฟังก์ชันและมาโครบางตัวที่ไม่ค่อยได้ใช้งานในโค้ด XS แล้ว
เหล่านี้คือ: "utf8_to_uvuni_buf" (ใช้ "utf8_to_uvchr_buf" แทน)
"valid_utf8_to_uvuni" (ใช้ "utf8_to_uvchr_buf" แทน), "NATIVE_TO_NEED" (สิ่งนี้ทำได้
ทำงานไม่ถูกต้องอยู่แล้ว) และ "ASCII_TO_NEED" (อย่างไรก็ตาม ยังทำงานไม่ถูกต้อง)

เริ่มต้นในรุ่นนี้แทบไม่ต้องแยกรหัสแอปพลิเคชันเลย
ระหว่างชุดอักขระของแพลตฟอร์มและ Latin1 ซึ่งอักขระต่ำสุด 256 ตัวของ
Unicode เป็นพื้นฐาน รหัสใหม่ไม่ควรใช้ "utf8n_to_uvuni" (ใช้ "utf8_to_uvchr_buf"
แทน) หรือ "uvuni_to_utf8" (ใช้ "uvchr_to_utf8" แทน)

· ทางลัด Makefile กำหนดเป้าหมายสำหรับการทดสอบและการทำโปรไฟล์ที่ไม่ค่อยได้ (หรือไม่เคย) เลย
เป้าหมายถูกลบหรือรวมเข้ากับเป้าหมาย Makefile อื่นเดียวที่ใช้
พวกเขา. โดยเฉพาะเป้าหมายเหล่านี้หายไปพร้อมกับเอกสารที่อ้างถึง
หรืออธิบายวิธีใช้:

check.third check.utf16 check.utf8 coretest minitest.prep
minitest.utf16 perl.config.dashg perl.config.dashg
perl.config.gcov perl.gcov perl.gprof perl.gprof.config
perl.pixie perl.pixie.atom perl.pixie.config perl.pixie.irix เพิร์ล
perl.third perl.third.config perl.valgrind.config purecovperl รวม
Pureperl quantperl test.deparse test.taintwarn test.third
test.torture test.utf16 test.utf8 test_notty.deparse
test_notty.third test_notty.valgrind test_prep.third
test_prep.valgrind ทรมานtest ucheck ucheck.third ucheck.utf16
ucheck.valgrind utest utest.ที่สาม utest.utf16 utest.valgrind

ยังคงสามารถเรียกใช้คำสั่งที่เกี่ยวข้องได้โดยใช้ "มือ" - ไม่มีข้อมูลอ้างอิง
ฟังก์ชั่นถูกลบออก

· ขณะนี้สามารถป้องกันไม่ให้ Perl เริ่มต้นการจัดการโลแคล ส่วนใหญ่,
Perl ไม่สนใจสถานที่ (ดู perllocale.) อย่างไรก็ตาม ถึงตอนนี้ บน
การเริ่มต้น มันได้เตรียมการโลแคลไว้เสมอเพื่อจัดการกับค่าเริ่มต้นของระบบ เผื่อไว้
โปรแกรมที่กำลังดำเนินการจบลงโดยใช้สถานที่ (นี่เป็นสิ่งแรกที่
โปรแกรม locale-aware ควรทำก่อนที่ Perl จะรู้ว่าจำเป็นต้องใช้จริงหรือไม่
หรือไม่) ใช้งานได้ดี ยกเว้นเมื่อ Perl ถูกฝังในแอปพลิเคชันอื่นซึ่ง
ต้องการสถานที่ที่ไม่ใช่ค่าเริ่มต้นของระบบ ทีนี้ถ้าตัวแปรสภาพแวดล้อม
"PERL_SKIP_LOCALE_INIT" ถูกตั้งค่าในขณะที่ Perl เริ่มต้น ขั้นตอนการเริ่มต้นนี้
ถูกข้ามไป ก่อนหน้านี้ บนแพลตฟอร์ม Windows วิธีแก้ปัญหาเท่านั้นสำหรับสิ่งนี้
ข้อบกพร่องคือการใช้สำเนาของรหัส Perl ภายในที่ถูกแฮ็ก แอพพลิเคชั่นที่ต้องการ
เพื่อใช้ Perls รุ่นเก่าสามารถค้นพบว่า Perl ที่ฝังตัวที่พวกเขาใช้ต้องการ
วิธีแก้ปัญหาโดยการทดสอบว่าสัญลักษณ์ตัวประมวลผลล่วงหน้า C "HAS_SKIP_LOCALE_INIT" ไม่ใช่
กำหนดไว้ [RT #38193]

· ลบ "BmRARE" และ "BmPREVIOUS" แล้ว พวกเขาไม่ได้ใช้ทุกที่และไม่ได้
ส่วนหนึ่งของ API สำหรับโมดูล XS ตอนนี้ #กำหนดเป็น 0

· "sv_force_normal" ซึ่งมักจะแอบอ้างค่าแบบอ่านอย่างเดียว ใช้เพื่ออนุญาตให้อ่านอย่างเดียว
ค่าที่จะแก้ไขในเวลารวบรวม นี้ได้ถูกเปลี่ยนเป็นบ่นเมื่ออ่านอย่างเดียว
ค่าโดยไม่คำนึงถึง การเปลี่ยนแปลงนี้เผยให้เห็นจุดบกพร่องหลักหลายประการ

· กลไกการคัดลอกเมื่อเขียนใหม่ของ Perl (ซึ่งขณะนี้เปิดใช้งานโดยค่าเริ่มต้น) อนุญาตใดๆ
สเกลาร์ "SvPOK" จะอัปเกรดเป็นสเกลาร์คัดลอกเมื่อเขียนโดยอัตโนมัติเมื่อคัดลอก อา
จำนวนอ้างอิงบนบัฟเฟอร์สตริงจะถูกเก็บไว้ในบัฟเฟอร์สตริงเอง

ตัวอย่างเช่น:

$ perl -MDevel::Peek -e'$a="abc"; $b = $a; ดัมพ์ $a; ดัมพ์ $b'
เอสวี= PV(0x260cd80) at 0x2620ad8
REFCNT = 1
ธง = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
เคอร์ = 3
เลน = 16
COW_REFCNT = 1
เอสวี= PV(0x260ce30) at 0x2620b20
REFCNT = 1
ธง = (POK,IsCOW,pPOK)
PV = 0x2619bc0 "abc"\0
เคอร์ = 3
เลน = 16
COW_REFCNT = 1

โปรดทราบว่าสเกลาร์ทั้งสองใช้บัฟเฟอร์ PV เดียวกันและมี COW_REFCNT มากกว่า
ศูนย์.

ซึ่งหมายความว่าโค้ด XS ที่ต้องการแก้ไขบัฟเฟอร์ "SvPVX()" ของ SV ควร
เรียก "SvPV_force()" หรือคล้ายกันก่อน เพื่อให้แน่ใจว่าบัฟเฟอร์ที่ถูกต้อง (และไม่ได้แบ่งใช้) และเพื่อ
เรียก "SvSETMAGIC()" หลังจากนั้น อันที่จริงก็เป็นเช่นนั้นเสมอมา (เช่น
แฮชคีย์ถูกคัดลอกเมื่อเขียนแล้ว); การเปลี่ยนแปลงนี้เพียงแค่กระจายพฤติกรรมของ COW ไปยัง a
SV ที่หลากหลายมากขึ้น

ความแตกต่างที่สำคัญอย่างหนึ่งคือก่อน 5.18.0 สเกลาร์แฮชคีย์ที่ใช้ร่วมกันเคยมี
ชุดแฟล็ก "SvREADONLY"; นี่ไม่ใช่กรณีอีกต่อไป

พฤติกรรมใหม่นี้ยังสามารถปิดใช้งานได้โดยการเรียกใช้ กำหนดค่า กับ
-Accflags=-DPERL_NO_COW. ตัวเลือกนี้อาจถูกลบใน Perl 5.22

· "PL_sawampersand" เป็นค่าคงที่ สวิตช์ตัวแปรนี้มีให้ (เป็น
เปิด/ปิดสำเนาก่อนการแข่งขันขึ้นอยู่กับว่าเห็น $& หรือไม่)
ลบและแทนที่ด้วย copy-on-write เพื่อขจัดข้อบกพร่องบางประการ

การทำงานก่อนหน้านี้ยังคงสามารถเปิดใช้งานได้โดยการเรียกใช้ กำหนดค่า กับ
-Accflags=-DPERL_SAWAMPERSAND.

· ฟังก์ชัน "my_swap", "my_htonl" และ "my_ntohl" ถูกลบออก ไม่ชัดเจน
เหตุใดฟังก์ชันเหล่านี้จึงถูกทำเครื่องหมายเป็น Aส่วนหนึ่งของ API รหัส XS ไม่สามารถเรียกได้
โดยตรง เนื่องจากไม่สามารถพึ่งพาการคอมไพล์ได้ ไม่น่าแปลกใจที่ไม่มีรหัสในCPAN
อ้างอิงพวกเขา

· ลายเซ็นของฟังก์ชัน regex "Perl_re_intuit_start()" เปลี่ยนไป ฟังก์ชั่น
ตัวชี้ "intuit" ในโครงสร้างปลั๊กอินเอ็นจิน regex ก็เปลี่ยนไปเช่นกัน อา
พารามิเตอร์ใหม่ "strbeg" ถูกเพิ่ม; นี้มีความหมายเดียวกับชื่อเดียวกัน
พารามิเตอร์ใน "Perl_regexec_flags" ก่อนหน้านี้สัญชาตญาณจะพยายามเดาจุดเริ่มต้นของ
สตริงจาก SV ที่ส่งผ่าน (ถ้ามี) และบางครั้งอาจผิดพลาดได้ (เช่น ด้วย an
SV โอเวอร์โหลด)

· ลายเซ็นของฟังก์ชัน regex "Perl_regexec_flags()" มีการเปลี่ยนแปลง ฟังก์ชั่น
ตัวชี้ "exec" ในโครงสร้างปลั๊กอินเอ็นจิน regex ก็เปลี่ยนไปเช่นกัน ดิ
ขณะนี้พารามิเตอร์ "minend" มีประเภท "Size_t" เพื่อรองรับระบบ 64 บิตได้ดียิ่งขึ้น

· โค้ด XS อาจใช้มาโครต่างๆ เพื่อเปลี่ยนตัวพิมพ์ของอักขระหรือโค้ดพอยต์ (for
ตัวอย่าง "toLOWER_utf8()") มีเพียงไม่กี่รายการเท่านั้นที่ได้รับการบันทึกไว้จนถึงขณะนี้ และตอนนี้
ควรใช้แทนการเรียกใช้ฟังก์ชันพื้นฐาน ดู "ตัวละคร
กรณีเปลี่ยน" in perlapi.

· รหัสนี้ค่อนข้างไม่สอดคล้องกับ uid และ gids บางแห่งสันนิษฐานว่า
สามารถจัดเก็บได้อย่างปลอดภัยใน UVs อื่น ๆ ใน IVs อื่น ๆ ใน ints มาโครใหม่สี่ตัวคือ
แนะนำ: SvUID(), sv_setuid(), SvGID()และ sv_setgid()

· เพิ่ม "sv_pos_b2u_flags" ใน API แล้ว คล้ายกับ "sv_pos_b2u" แต่
รองรับสตริงแบบยาวบนแพลตฟอร์ม 64 บิต

· "PL_exit_flags" สามารถใช้โดย perl embedders หรือโค้ด XS อื่น ๆ เพื่อให้ Perl "เตือน"
หรือ "ยกเลิก" เมื่อพยายามออก [เพิร์ล #52000]

· คอมไพล์ด้วย "-Accflags=-PERL_BOOL_AS_CHAR" อนุญาตให้คอมไพเลอร์ C99 และ C++
เลียนแบบนามแฝงของ "bool" เป็น "char" ที่ Perl ทำสำหรับคอมไพเลอร์ C89 [เพิร์ล
#120314]

· อาร์กิวเมนต์ "sv" ใน "sv_2pv_flags" ใน perlapi, "sv_2iv_flags" ใน perlapi
"sv_2uv_flags" ใน perlapi และ "sv_2nv_flags" ใน perlapi และ wrappers ที่เก่ากว่า
sv_2pv, sv_2iv, sv_2uv, sv_2nv ตอนนี้ไม่ใช่ค่า NULL ผ่าน NULL ตอนนี้จะล้มเหลว เมื่อไหร่
เครื่องหมายที่ไม่ใช่ค่า NULL ถูกนำมาใช้อย่างมากมายใน 5.9.3 ฟังก์ชั่นถูกทำเครื่องหมายว่าไม่ใช่-
NULL แต่เนื่องจากการสร้าง SV API ใน 5.0 alpha 2 หากผ่าน NULL ค่า
ฟังก์ชันส่งคืน 0 หรือค่าประเภทเท็จ รหัสที่รองรับอาร์กิวเมนต์ "sv" คือ
วันที่ที่ไม่ใช่ NULL ถึง 5.0 alpha 2 โดยตรง และโดยอ้อมไปยัง Perl 1.0 (ก่อน 5.0 api) ดิ
ขาดเอกสารที่ฟังก์ชันยอมรับ NULL "sv" ได้รับการแก้ไขใน5.11.0
และระหว่าง 5.11.0 ถึง 5.19.5 ฟังก์ชันถูกทำเครื่องหมายเป็น NULLOK เป็นการเพิ่มประสิทธิภาพ
ตอนนี้โค้ด NULLOK ถูกลบแล้ว และฟังก์ชันก็กลายเป็น non-NULL ที่ทำเครื่องหมายอีกครั้ง
เนื่องจากมาโครประเภท getter หลักจะไม่ส่งค่า NULL ไปยังฟังก์ชันเหล่านี้และจะขัดข้อง
ก่อนที่จะผ่าน NULL

วิธีเดียวที่ค่า NULL "sv" สามารถส่งผ่านไปยังฟังก์ชัน sv_2*v* ได้คือถ้าโค้ด XS โดยตรง
โทร sv_2*v* สิ่งนี้ไม่น่าเป็นไปได้เนื่องจากโค้ด XS ใช้มาโคร Sv*V* เพื่อรับข้อมูลพื้นฐาน
มูลค่าจาก SV สถานการณ์หนึ่งที่เป็นไปได้ซึ่งนำไปสู่ ​​NULL "sv" ที่ถูกส่งผ่านไปยัง
ฟังก์ชัน sv_2*v* คือถ้าโค้ด XS กำหนดมาโครประเภท getter ของตัวเอง Sv*V* ซึ่งจะตรวจสอบ
สำหรับ NULL ก่อน ยกเลิกการอ้างอิงและตรวจสอบแฟล็กของ SV ผ่าน API สาธารณะ Sv*OK*
มาโครหรือใช้ API ส่วนตัวโดยตรง "SvFLAGS" และหาก "sv" เป็น NULL ให้เรียกใช้
sv_2*v ทำงานโดยมี NULL litteral หรือส่งผ่าน "sv" ที่มีค่า NULL

· ใหม่ATTRSUB เป็นมาโครแล้ว

API สาธารณะ newATTRSUB ก่อนหน้านี้เคยเป็นมาโครของฟังก์ชันส่วนตัว
Perl_newATTRSUB. ฟังก์ชัน Perl_newATTRSUB ถูกลบออก ใหม่ATTRSUB เป็นมาโครที่
ฟังก์ชั่นภายในที่แตกต่างกัน

· การเปลี่ยนแปลงคำเตือนที่เกิดขึ้นโดย "utf8n_to_uvchr()"

ฟังก์ชันระดับล่างสุดนี้จะถอดรหัสอักขระตัวแรกของสตริง UTF-8 เป็นโค้ด
จุด. สามารถเข้าถึงรหัสระดับ "XS" ได้ แต่ไม่แนะนำให้ใช้
โดยตรง. มีฟังก์ชั่นระดับสูงกว่าที่เรียกสิ่งนี้ว่าควรใช้
แทน เช่น "utf8_to_uvchr_buf" ใน perlapi เพื่อความครบถ้วน
เอกสารการเปลี่ยนแปลงบางอย่างไป ตอนนี้ การทดสอบการผิดรูปจะเสร็จสิ้นก่อนการทดสอบใดๆ
สำหรับปัญหาอื่นๆ ที่อาจเกิดขึ้น หนึ่งในปัญหาเหล่านั้นเกี่ยวข้องกับจุดรหัสที่ใหญ่มากจน
ไม่เคยปรากฏในมาตรฐานที่เป็นทางการใดๆ (มาตรฐานปัจจุบันมีการปรับขนาด
ย้อนกลับจุดรหัสสูงสุดที่ยอมรับได้จากเวอร์ชันก่อนหน้า) เป็นไปได้ (แม้ว่า
ไม่ได้ทำใน CPAN) เพื่อเตือนและ/หรือห้ามจุดรหัสเหล่านี้ในขณะที่ยอมรับน้อยกว่า
จุดโค้ดที่ยังคงสูงกว่าค่าสูงสุดของ Unicode ตามกฎหมาย ข้อความเตือนสำหรับ
ซึ่งรวมถึงจุดรหัสหากแสดงบนเครื่องได้ ก่อนหน้านี้มัน
แสดงไบต์ดิบเสมอซึ่งเป็นสิ่งที่ยังคงทำสำหรับโค้ดที่ไม่สามารถเป็นตัวแทนได้
จุด

·การเปลี่ยนแปลงเอ็นจิ้น Regexp ที่ส่งผลต่ออินเตอร์เฟสเอ็นจิ้น regex ที่เสียบได้

แฟล็กจำนวนมากที่เคยเปิดเผยผ่าน regexp.h และใช้เพื่อเติม extflags
สมาชิกของ struct regexp ถูกลบออก ฟิลด์เหล่านี้เป็นข้อมูลส่วนตัวในทางเทคนิคกับ
เอ็นจิ้น regexp ของ Perl เองและไม่ควรเปิดเผยที่นั่นตั้งแต่แรก

แฟล็กที่ได้รับผลกระทบคือ:

RXf_NOSCAN
RXf_CANY_SEEN
RXf_GPOS_SEEN
RXf_GPOS_FLOAT
RXf_ANCH_BOL
RXf_ANCH_MBOL
RXf_ANCH_SBOL
RXf_ANCH_GPOS

เช่นเดียวกับมาสก์ธงต่อไปนี้:

RXf_ANCH_SINGLE
RXf_ANCH

ทั้งหมดถูกเปลี่ยนชื่อเป็น PREGf_ ที่เทียบเท่าและย้ายไปที่ regcomp.h

ลักษณะการทำงานที่ทำได้ก่อนหน้านี้โดยการตั้งค่าสถานะ RXf_ANCH_ อย่างน้อยหนึ่งรายการ (ผ่าน
หน้ากาก RXf_ANCH) ได้ถูกแทนที่ด้วยแฟล็กบิต *single* ใน extflags:

RXf_IS_ANCHORED

เอ็นจิ้น regex ที่เสียบได้ซึ่งก่อนหน้านี้เคยตั้งค่าสถานะเหล่านี้ควรตั้งค่านี้
ธงคนเดียว

· แกน Perl ตอนนี้ใช้ "av_tindex()" ("ดัชนีบนสุดของอาร์เรย์") เป็น a . อย่างสม่ำเสมอ
ชื่อพ้องที่ชัดเจนยิ่งขึ้นสำหรับ "av_len()"

· คาดว่าตัวแปรล่ามที่คลุมเครือ "PL_timesbuf" จะถูกลบออกในช่วงต้นของ
ชุดพัฒนา 5.21.x เพื่อไม่ให้ Perl 5.22.0 มอบให้กับผู้เขียน XS
ในขณะที่ตัวแปรยังคงมีอยู่ใน 5.20.0 เราหวังว่าการเตือนล่วงหน้าของ
การเลิกใช้งานจะช่วยทุกคนที่ใช้ตัวแปรนั้น

เลือก Bug แก้ไข


ปกติ การแสดงออก
· แก้ไขโครงสร้าง regexp จำนวนเล็กน้อยที่อาจไม่สามารถจับคู่หรือขัดข้องได้
perl เมื่อสตริงที่จับคู่ถูกจัดสรรเหนือบรรทัด 2GB บน 32-bit
ระบบต่างๆ [RT #118175]

· หน่วยความจำรั่วต่างๆ ที่เกี่ยวข้องกับการแยกวิเคราะห์ "(?[...])" นิพจน์ทั่วไป
โครงสร้างได้รับการแก้ไขแล้ว

· "(?[...])" ตอนนี้อนุญาตให้แก้ไขรูปแบบที่คอมไพล์ล่วงหน้าซึ่งประกอบด้วย "(?[...])"
ภายในมีคลาสอักขระในวงเล็บ ("$pat = qr/(?[ [a] ])/; /(?[ $pat ])/")
ก่อนหน้านี้ วงเล็บจะทำให้ตัวแยกวิเคราะห์นิพจน์ทั่วไปสับสน

· ข้อความเตือน "ปริมาณที่ไม่คาดคิดในนิพจน์ความยาวเป็นศูนย์" อาจปรากฏขึ้น
เริ่มต้นสองครั้งใน Perl v5.10 สำหรับนิพจน์ทั่วไปที่มี alternations
(เช่น "a|b") ทำให้เกิดการเพิ่มประสิทธิภาพการพยายาม

· Perl v5.18 แนะนำจุดบกพร่องโดยไม่ได้ตั้งใจโดยการแก้ไขแบบผสมขึ้นและลง
สตริง UTF-8 ที่ให้คะแนนใน regex อาจส่งผลให้ UTF-8 มีรูปแบบไม่ถูกต้อง:
โดยเฉพาะถ้าอักขระที่ปรับลดรุ่นในช่วง "\x80..\xff" ตามด้วย UTF-8
สตริงเช่น

utf8::upgrade( my $u = "\x{e5}");
utf8::downgrade(my $d = "\x{e5}");
/$u$d/

[RT #118297]

· ในนิพจน์ทั่วไปที่มีบล็อคโค้ดหลายอัน ค่าของ $1, $2 เป็นต้น
ที่กำหนดโดยการเรียกนิพจน์ทั่วไปที่ซ้อนกันจะรั่วจากบล็อกหนึ่งไปยังอีกบล็อกหนึ่ง ตอนนี้
ตัวแปรเหล่านี้มักจะอ้างถึงนิพจน์ทั่วไปภายนอกที่จุดเริ่มต้นของ an
บล็อกฝังตัว [perl #117917]

· "/$qr/p" ใช้งานไม่ได้ใน Perl 5.18.0; แฟล็ก "/ p" ถูกละเว้น สิ่งนี้ได้รับการแก้ไขแล้ว
[เพิร์ล #118213]

· เริ่มต้นใน Perl 5.18.0 โครงสร้างเช่น "/[#](?{})/x" จะมี "#" ไม่ถูกต้อง
ตีความว่าเป็นความคิดเห็น บล็อกรหัสจะถูกข้ามไปโดยไม่มีการแยกวิเคราะห์ นี้ได้รับ
การแก้ไข

· เริ่มต้นใน Perl 5.001 นิพจน์ทั่วไปเช่น "/[#$a]/x" หรือ "/[#]$a/x" จะมี
"#" ของมันตีความอย่างไม่ถูกต้องว่าเป็นความคิดเห็น ดังนั้นตัวแปรจะไม่สอดแทรก
สิ่งนี้ได้รับการแก้ไขแล้ว [เพิร์ล #45667]

· Perl 5.18.0 สร้างนิพจน์ทั่วไปที่ไม่อ้างอิงโดยไม่ได้ตั้งใจ ("${ qr// }") เป็นเท็จ
บูลีน สิ่งนี้ได้รับการแก้ไขแล้ว

· การใช้ "\G" ในนิพจน์ทั่วไป ซึ่งไม่ใช่จุดเริ่มต้นของรูปแบบ คือ
ตอนนี้บั๊กกี้น้อยลงเล็กน้อย (แม้ว่าจะยังค่อนข้างมีปัญหาอยู่ก็ตาม)

· เมื่อนิพจน์ทั่วไปรวมโค้ดบล็อก ("/(?{...})/") และการใช้
การโอเวอร์โหลดอย่างต่อเนื่องทำให้เกิดการคอมไพล์ใหม่ของบล็อกโค้ด วินาที
การรวบรวมไม่เห็นขอบเขตคำศัพท์ภายนอก นี่คือการถดถอยใน Perl 5.18.0

· ตำแหน่งของสตริงที่กำหนดโดย "pos" อาจเปลี่ยนได้หากสตริงเปลี่ยนการแทนค่า
ภายในหรือจาก utf8 สิ่งนี้อาจเกิดขึ้นได้ เช่น มีการอ้างอิงถึงวัตถุด้วย
โอเวอร์โหลดสตริง

· การอ้างอิงถึงค่าที่ส่งคืนของการเรียก "pos" สองครั้งด้วยอาร์กิวเมนต์เดียวกัน และ
จากนั้นกำหนดการอ้างอิงให้กับหนึ่งและ "undef" ให้กับอีกคนหนึ่งอาจส่งผลให้มีการยืนยัน
ความล้มเหลวหรือการรั่วไหลของหน่วยความจำ

· องค์ประกอบของ @- และ @+ จะอัปเดตอย่างถูกต้องเมื่ออ้างถึงการจับภาพที่ไม่มีอยู่จริง
ก่อนหน้านี้ องค์ประกอบที่อ้างอิง ("$ref = \$-[1]") อาจหมายถึงการจับคู่ที่ไม่ถูกต้อง
หลังการแข่งขันนัดต่อมา

· รหัสที่แยกวิเคราะห์ regex backrefs (หรือ backref/octals ที่คลุมเครือ) เช่น \123 ได้
ง่าย อะโทอิ()ซึ่งสามารถล้อมค่าลบในสตริงตัวเลขยาวและ
ทำให้เกิดความผิดพลาดในการแบ่งส่วน ตอนนี้ได้รับการแก้ไขแล้ว [เพิร์ล #119505]

· การกำหนด typeglob อื่นให้กับ "*^R" จะไม่ทำให้เอ็นจิ้นนิพจน์ปกติอีกต่อไป
ชน

· นิพจน์ทั่วไป "\N" หนี เมื่อใช้โดยไม่มีเครื่องหมายปีกกา (หมายถึง
"[^\n]") ละเว้น "*" ต่อไปนี้ หากตามด้วยช่องว่างใต้ /x มันมี
เป็นอย่างนี้ตั้งแต่ "\N" ถึงหมายถึง "[^\n]" เปิดตัวใน 5.12.0

· "s///", "tr///" และ "y///" ตอนนี้ใช้ได้เมื่อใช้อักขระแบบกว้างเป็นตัวคั่น
[เพิร์ล #120463]

· บางกรณีของลำดับที่ไม่สิ้นสุด (?...) ในนิพจน์ทั่วไป (เช่น "/(?
ได้รับการแก้ไขเพื่อสร้างข้อความแสดงข้อผิดพลาดที่เหมาะสมแทน "แพนิค: หน่วยความจำห่อ"
กรณีอื่นๆ (เช่น "/(?(/") ยังไม่ได้รับการแก้ไข

· เมื่อการอ้างอิงถึงการอ้างอิงไปยังวัตถุที่โอเวอร์โหลดถูกส่งกลับจากปกติ
นิพจน์ "(??{...})" บล็อกโค้ด อาจมีการอ้างอิงโดยปริยายที่ไม่ถูกต้อง
ถ้าการอ้างอิงภายในถูกส่งคืนโดยบล็อกโค้ดก่อนหน้านี้

· ตัวแปรผูกที่ส่งคืนจาก "(??{...})" เห็นค่าภายในของตัวแปรที่ตรงกัน
(เช่น $1 เป็นต้น จากการแข่งขันใดๆ ภายในบล็อก) ในวิธี FETCH นี้คือ
ไม่ใช่กรณีที่การอ้างอิงถึงวัตถุที่โอเวอร์โหลดเป็นสิ่งสุดท้ายที่กำหนดให้กับ
ตัวแปรผูก แต่ตัวแปรการจับคู่อ้างอิงถึงรูปแบบภายนอกระหว่าง
รับสาย

· แก้ไขการเสียที่ไม่คาดคิดผ่าน regexp โดยใช้สถานที่ ก่อนหน้านี้ภายใต้เงื่อนไขบางประการ
การใช้คลาสอักขระอาจทำให้เกิดการเสียได้เมื่อไม่ควร ตัวละครบางตัว
คลาสนั้นขึ้นอยู่กับสถานที่ แต่ก่อนแพตช์นี้ บางครั้งการปนเปื้อนก็เกิดขึ้น
แม้แต่คลาสอักขระที่ไม่ขึ้นอยู่กับโลแคล [เพิร์ล #120675]

· ภายใต้เงื่อนไขบางประการ Perl จะแสดงข้อผิดพลาดหากอยู่ในการยืนยันที่อยู่เบื้องหลังใน a
regexp การยืนยันอ้างถึงรูปแบบย่อยที่มีชื่อบ่นว่าด้านหลังเป็น
ตัวแปรเมื่อไม่ได้ สิ่งนี้ได้รับการแก้ไขแล้ว [perl #120600], [perl #120618] ดิ
การแก้ไขปัจจุบันอาจได้รับการปรับปรุงในอนาคต

· $^R ไม่พร้อมใช้งานนอกนิพจน์ทั่วไปที่เริ่มต้น [เพิร์ล
#121070]

· ชุดใหญ่ของการแก้ไขและการปรับโครงสร้างสำหรับ re_intuit_start() ถูกผสานไฮไลท์
คือ:

· แก้ไขความตื่นตระหนกเมื่อรวบรวมนิพจน์ทั่วไป "/\x{100}[xy]\x{100}{2}/"

· แก้ไขการถดถอยของประสิทธิภาพเมื่อทำการจับคู่รูปแบบทั่วโลกกับ a
สตริง UTF-8 [เพิร์ล #120692]

· แก้ไขปัญหาประสิทธิภาพการทำงานอื่นที่ตรงกับนิพจน์ทั่วไปเช่น
"/ab.{1,2}x/" เทียบกับสตริง UTF-8 แบบยาวจะคำนวณไบต์โดยไม่จำเป็น
ชดเชยส่วนใหญ่ของสตริง [เพิร์ล #120692]

· แก้ไขข้อผิดพลาดการจัดตำแหน่งเมื่อรวบรวมนิพจน์ทั่วไปเมื่อสร้างด้วย GCC บน HP-
UX 64 บิต

· บนแพลตฟอร์ม 64 บิต "pos" สามารถตั้งค่าให้สูงกว่า 2**31-1 [เพิร์ล
#72766]

Perl 5 Debugger และ -d
· คำสั่ง "man" ของดีบักเกอร์ได้รับการแก้ไขแล้ว มันใช้งานไม่ได้ในรุ่น v5.18.0 NS
คำสั่ง "man" ใช้นามแฝงในชื่อ "doc" และ "perldoc" ซึ่งทั้งหมดนี้ใช้งานได้อีกครั้ง

· @_ ปรากฏอย่างถูกต้องในดีบักเกอร์ แก้ไขการถดถอยที่แนะนำใน
ดีบักเกอร์ของ v5.18.0 [RT #118169]

· ภายใต้การสร้างสำเนาเมื่อเขียน (ค่าเริ่มต้น ณ 5.20.0) "${'_<-e'}[0]" จะไม่ได้รับอีกต่อไป
แหลกสลาย นี่คืออินพุตบรรทัดแรกที่บันทึกไว้สำหรับการใช้ดีบักเกอร์สำหรับหนึ่งซับ
[เพิร์ล #118627].

· บนบิลด์ที่ไม่ใช่เธรด ตั้งค่า "${"_
ทำให้ "__FILE__" และข้อความแสดงข้อผิดพลาดสร้างสตริงที่เสียหาย และไม่อีกต่อไป
ป้องกันคำสั่ง "#line" ในการ eval สตริงไม่ให้มีบรรทัดต้นทางไปยัง
ดีบักเกอร์ บิลด์แบบเกลียวไม่ได้รับผลกระทบ

· เริ่มต้นด้วย Perl 5.12 หมายเลขบรรทัดจะถูกปิดโดยหนึ่งถ้า -d สวิตช์ถูกใช้บน
#! ไลน์. ตอนนี้พวกเขาถูกต้อง

· "*DB::DB = sub {} if 0" ไม่หยุดโหมดการดีบักของ Perl จากการค้นหา "DB::DB" อีกต่อไป
ประกาศย่อยในภายหลัง

· "%{'_<...'}" ตอนนี้ตั้งค่าเบรกพอยต์บน "@{'_<...'}" ที่เกี่ยวข้องแทน
อาร์เรย์ใดก็ได้ @DB::dbline ที่ใช้นามแฝง [เพิร์ล #119799]

· เรียก set-magic เมื่อตั้งค่า $DB::sub. [เพิร์ล #121255]

· คำสั่ง "n" ของดีบักเกอร์ใช้รูทีนย่อย lvalue และทำตามขั้นตอนเหล่านี้ [perl
#118839].

คำศัพท์ รูทีนย่อย
· ค่าคงที่ศัพท์ ("my sub a() { 42 }") จะไม่ขัดข้องเมื่ออยู่ในบรรทัด

· ต้นแบบพารามิเตอร์ที่แนบมากับรูทีนย่อยของคำศัพท์จะได้รับการยอมรับเมื่อทำการคอมไพล์
การโทรย่อยโดยไม่มีวงเล็บ ก่อนหน้านี้ต้นแบบได้รับเกียรติเฉพาะสำหรับ
โทร กับ วงเล็บ [RT #116735]

· ข้อผิดพลาดทางไวยากรณ์ในรูทีนย่อยคำศัพท์ร่วมกับการเรียกรูทีนย่อยเดียวกัน
ไม่ทำให้เกิดปัญหาในขณะคอมไพล์อีกต่อไป

· คำเตือนการเรียกซ้ำแบบลึกจะไม่ทำให้รูทีนย่อยของคำศัพท์ขัดข้องอีกต่อไป [RT #118521]

· โพรบรายการย่อย dtrace ใช้งานได้กับ lexical subs แทนที่จะทำงานล้มเหลว [perl
#118305].

· Undefining an inlinable lexical subroutine ("my sub foo() { 42 } undef &foo") จะ
ส่งผลให้เกิดความผิดพลาดหากเปิดคำเตือนไว้

· ศัพท์ย่อยที่ไม่ได้กำหนดซึ่งใช้เป็นวิธีการสืบทอดจะไม่เกิดปัญหาอีกต่อไป

· การมีอยู่ของคำศัพท์ย่อยที่ชื่อ "CORE" จะไม่หยุดคำนำหน้า CORE:: จาก . อีกต่อไป
ทำงาน.

ทุกอย่าง อื่น
· ตอนนี้รหัสการจัดสรร OP จะส่งคืนหน่วยความจำที่จัดตำแหน่งอย่างถูกต้องในทุกกรณีสำหรับ "struct
pmop" ก่อนหน้านี้สามารถส่งคืนหน่วยความจำที่จัดชิดขอบ 4 ไบต์เท่านั้นซึ่งก็คือ
ไม่ถูกต้องสำหรับ ithreads ที่สร้างด้วย 64 บิต IV บนแพลตฟอร์ม 32 บิตบางตัว โดยเฉพาะอย่างยิ่ง
สิ่งนี้ทำให้การสร้างล้มเหลวอย่างสมบูรณ์บน sparc GNU/Linux [RT #118055]

· การประเมินแฮชขนาดใหญ่ในบริบทสเกลาร์เร็วขึ้นมาก เนื่องจากจำนวนที่ใช้
เชนในแฮชถูกแคชสำหรับแฮชที่ใหญ่ขึ้น แฮชขนาดเล็กยังคงไม่
จัดเก็บและคำนวณเมื่อจำเป็น เนื่องจากจะช่วยประหยัด IV นั่นคือ 1 IV
ค่าโสหุ้ยสำหรับทุกอ็อบเจ็กต์ที่สร้างจากแฮช [RT #114576]

· Perl v5.16 แนะนำจุดบกพร่องโดยไม่ได้ตั้งใจโดยการโทรไปยัง XSUB ที่มองไม่เห็น
ในเวลาคอมไพล์ถือว่าเป็น lvalues ​​และสามารถกำหนดให้กับ . ได้
รูทีนย่อยไม่ใช่รูทีนย่อย lvalue สิ่งนี้ได้รับการแก้ไขแล้ว [RT #117947]

· ใน Perl v5.18.0 dualvars ที่มีสตริงว่างสำหรับส่วนของสตริงแต่ไม่ใช่ศูนย์
ตัวเลขสำหรับส่วนจำนวนที่เริ่มต้นถือว่าเป็นจริง ในเวอร์ชันก่อนๆ พวกเขา
ถูกมองว่าเป็นเท็จ การแสดงสตริงมีความสำคัญกว่า เก่า
พฤติกรรมได้รับการฟื้นฟู [RT #118159]

· ตั้งแต่ Perl v5.12 การอินไลน์ของค่าคงที่ที่แทนที่คีย์เวิร์ดในตัวของรายการเดียวกัน
ชื่อได้ตอบโต้ "use subs" ทำให้การกล่าวถึงค่าคงที่ในภายหลังใช้
คีย์เวิร์ดในตัวแทน สิ่งนี้ได้รับการแก้ไขแล้ว

· คำเตือนที่สร้างโดย "-l $handle" ใช้กับผู้อ้างอิง IO และ globs ไม่ใช่แค่กับ
การอ้างอิงทั่วโลก คำเตือนนั้นตอนนี้ก็เป็น UTF8-clean แล้วเช่นกัน [RT #117595]

· "ลบ $ENV{nonexistent_env_var} ในเครื่อง" จะไม่ทำให้หน่วยความจำรั่วอีกต่อไป

· "sort" และ "require" ตามด้วยคำสำคัญที่นำหน้าด้วย "CORE::" ตอนนี้ถือว่า
คีย์เวิร์ด ไม่ใช่รูทีนย่อยหรือชื่อโมดูล [RT #24482]

· ด้วยปัญหาบางอย่าง อาจทำให้แพ็คเกจปัจจุบันว่างได้
โอเปอเรเตอร์บางตัว ("bless", "reset", "open", "eval") ไม่สามารถรับมือได้และอาจหยุดทำงาน
พวกเขาได้รับการทำให้มีความยืดหยุ่นมากขึ้น [RT #117941]

· นามแฝง filehandle ผ่านการกำหนด glob-to-glob จะไม่อัปเดตวิธีการภายใน
แคชอย่างถูกต้องหากมีแพ็คเกจชื่อเดียวกับ filehandle ส่งผลให้
filehandle เรียกเมธอดไปที่แพ็คเกจแทน สิ่งนี้ได้รับการแก้ไขแล้ว

· "./Configure -de -Dusevendorprefix" ไม่ได้เริ่มต้น [RT #64126]

· คำเตือน "คำชี้แจงไม่น่าจะถึง" ถูกระบุไว้ใน perldiag เป็น an
คำเตือนหมวดหมู่ "exec" แต่เปิดใช้งานและปิดใช้งานโดยหมวดหมู่ "ไวยากรณ์" บน
ในทางกลับกัน หมวดหมู่ "ผู้บริหาร" ควบคุมการตายได้ หมดแล้วหมดเลย
จัดการโดยหมวด "ผู้บริหาร"

· คำเตือน "รายการทดแทนยาวกว่ารายการค้นหา" สำหรับ "tr///" และ "y///" ไม่ใช่
เกิดขึ้นนานขึ้นเมื่อมีแฟล็ก "/c" [RT #118047]

· Stringification ของ NVs ไม่ถูกแคชเพื่อให้ lexical locale ควบคุม
การทำให้เป็นจุดทศนิยม [perl #108378] [perl #115800]

· มีการแก้ไขหลายอย่างที่เกี่ยวข้องกับการจัดการภาษาของ Perl perl #38193 เคยเป็น
อธิบายไว้ข้างต้นใน "การเปลี่ยนแปลงภายใน" แก้ไขด้วย #118197 โดยที่ radix
อักขระ (จุดทศนิยม) ต้องเป็นอักขระ ASCII (ซึ่งใช้ไม่ได้กับบางคน)
ภาษาที่ไม่ใช่ภาษาตะวันตก); และ #115808 ซึ่ง "POSIX::setlocale()" เมื่อความล้มเหลวส่งคืน
"undef" ซึ่งไม่ได้เตือนว่าไม่มีการกำหนดแม้ว่าคำเตือนเหล่านั้นจะเป็น
เปิดการใช้งาน

· รวบรวมโอเปอเรเตอร์ "split" ซึ่งมีอาร์กิวเมนต์ที่สามเป็นค่าคงที่ที่มีชื่อซึ่งประเมินเป็น0
ไม่ทำให้ค่าคงที่เปลี่ยนแปลงอีกต่อไป

· ค่าคงที่ที่มีชื่อที่ใช้เป็นอาร์กิวเมนต์ที่สองของ "index" จะไม่ถูกบังคับไปยัง a . อีกต่อไป
string ถ้าเป็นการอ้างอิง นิพจน์ทั่วไป dualvar ฯลฯ

· ค่าคงที่ที่มีชื่อซึ่งประเมินค่าที่ไม่ได้กำหนดไว้ซึ่งใช้เป็นอาร์กิวเมนต์ที่สองของ
"ดัชนี" ไม่สร้างคำเตือน "ไม่ได้กำหนดค่าเริ่มต้น" อีกต่อไปในขณะรวบรวม มันจะยัง
ผลิตได้ในเวลาทำงาน

· เมื่อสเกลาร์ถูกส่งกลับจากรูทีนย่อยใน @INC สเกลาร์ที่อ้างอิงคือ
แปลงเป็น IO อย่างน่าอัศจรรย์อาจส่งผลให้เกิดข้อผิดพลาด "Bizarre copy" if
สเกลาร์นั้นยังคงถูกใช้ที่อื่นต่อไป ตอนนี้ Perl ใช้สำเนาภายในของ
สเกลาร์แทน

· การใช้โอเปอเรเตอร์ "sort" บางอย่างได้รับการปรับให้เหมาะสมเพื่อแก้ไขอาร์เรย์ที่มีอยู่ เช่น
"@a = เรียงลำดับ @a" ในระหว่างการเรียงลำดับ อาร์เรย์จะถูกทำให้เป็นแบบอ่านอย่างเดียว หากเป็นบล็อกการเรียงลำดับ
ควรจะตาย จากนั้นอาร์เรย์ยังคงเป็นแบบอ่านอย่างเดียวแม้จะอยู่นอก "การเรียงลำดับ" นี้
ได้รับการแก้ไขแล้ว

· $a และ $b ภายในบล็อกการเรียงลำดับจะใช้นามแฝงกับอาร์กิวเมนต์ที่แท้จริงเพื่อ "เรียงลำดับ" ดังนั้นพวกเขา
สามารถแก้ไขได้โดยผ่านสองตัวแปรนี้ วิธีนี้ใช้ไม่ได้ผลเสมอไป เช่น สำหรับ
lvalue subs และ $#ary และอาจเป็นตัวดำเนินการอื่น ๆ อีกมากมาย มันใช้งานได้แล้ว

· อาร์กิวเมนต์ของ "sort" ทั้งหมดอยู่ในบริบทของรายการ ถ้าเรียกตัวเองว่า "เรียงลำดับ"
ในบริบทที่เป็นโมฆะหรือสเกลาร์ ดังนั้น บางแต่ไม่ทั้งหมด ข้อโต้แย้งเคยเป็นโมฆะ
หรือบริบทสเกลาร์

· โปรโตไทป์ย่อยที่มีอักขระ Unicode เหนือ U+00FF ถูกทำลายในระหว่าง
การโคลนปิด สิ่งนี้จะเกิดขึ้นกับรูทีนย่อยที่ปิดทับตัวแปรศัพท์
ประกาศภายนอกและมีศัพท์ย่อย

· ขณะนี้ "UNIVERSAL::can" ถือว่าอาร์กิวเมนต์แรกเหมือนกับการเรียกใช้เมธอด:
Typeglobs และการอ้างอิง glob ที่มีสล็อต IO ที่ไม่ว่างเปล่าถือเป็นแฮนเดิลและ
สตริงจะถือว่าเป็น filehandle แทนที่จะเป็นแพ็คเกจ หากตัวจัดการที่มีชื่อนั้น
มีอยู่ [perl #113932]

· การเรียกใช้เมธอดบน typeglobs (เช่น "*ARGV->getline") ที่ใช้ในการทำให้ typeglob และ
แล้วเปิดดูอีกครั้ง เมื่อรวมกับการเปลี่ยนแปลงใน Perl 5.18.0 อนุญาตให้ใช้ "*foo->bar"
เพื่อเรียกใช้เมธอดในแพ็คเกจ "foo" (เช่น "foo->bar") ในบางกรณีอาจทำให้
วิธีการที่จะเรียกบนหมายเลขอ้างอิงที่ไม่ถูกต้อง ตอนนี้อาร์กิวเมนต์ typeglob จะถือว่าเป็นa
ตัวจัดการ (เช่นเดียวกับ "(\*foo)->bar") หรือหากช่อง IO ว่างเปล่า จะเกิดข้อผิดพลาดขึ้น

· กำหนด vstring ให้กับตัวแปรที่ผูกไว้หรืออาร์กิวเมนต์รูทีนย่อยที่ใช้นามแฝงกับa
ตอนนี้องค์ประกอบแฮชหรืออาร์เรย์ที่ไม่มีอยู่ใช้งานได้โดยไม่ต้องทำให้ vstring แบนลงใน a
สตริงปกติ

· "pos", "tie", "tied" และ "untie" ทำงานไม่ถูกต้องบนอาร์กิวเมนต์ย่อยที่ใช้นามแฝง
ไปยังองค์ประกอบแฮชและอาร์เรย์ที่ไม่มีอยู่ [perl #77814, #27010]

· ตัวดำเนินการลูกศร "=>" สามารถอ้างคำสำคัญในตัวได้ แม้ว่าจะเกิดขึ้นใน
บรรทัดถัดไป ทำให้สอดคล้องกับวิธีปฏิบัติกับคำศัพท์อื่นๆ

· การทำให้รูทีนย่อยอัตโนมัติผ่าน "\&$glob" ทำให้เกิดการขัดข้องใน Perl 5.18.0
ถ้า $glob เป็นเพียงสำเนาของ glob จริง เช่น สเกลาร์ที่มี glob
มอบหมายให้กับมัน สิ่งนี้ได้รับการแก้ไขแล้ว [เพิร์ล #119051]

· Perl เคยรั่วไหลรายละเอียดการใช้งานเมื่อพูดถึงการส่งคืน
ค่าของตัวดำเนินการบางอย่าง "for ($a+$b) { warn \$_; warn \$_ }" ใช้เพื่อแสดงสอง
ที่อยู่หน่วยความจำต่างกัน เนื่องจากตัวดำเนินการ "\" กำลังคัดลอกตัวแปร ภายใต้
เธรดบิลด์ก็จะเกิดขึ้นสำหรับค่าคงที่เช่นกัน ("for (1) { ... }") นี่คือ
แก้ไขแล้ว. [เพิร์ล #21979, #78194, #89188, #109746, #114838, #115388]

· ตัวดำเนินการช่วง ".." กำลังส่งคืนสเกลาร์ที่ปรับเปลี่ยนได้แบบเดียวกันกับการโทรแต่ละครั้ง
เว้นแต่จะเป็นสิ่งเดียวในส่วนหัวของลูป "foreach" นี่หมายความว่าการเปลี่ยนแปลงเป็น
ค่าภายในรายการที่ส่งคืนจะปรากฏในครั้งต่อไปที่ตัวดำเนินการ was
ดำเนินการ [เพิร์ล #3105]

· การพับและซับรูทีนของรูทีนย่อยอย่างต่อเนื่องจะไม่ทำให้เกิดการทำงานที่จะ
ปกติจะคืนค่าสเกลาร์ที่แก้ไขได้ใหม่เพื่อคืนค่าแบบอ่านอย่างเดียวแทน

· การปิดแบบฟอร์ม "sub () { $some_variable }" จะไม่อยู่ในบรรทัดอีกต่อไป ทำให้เกิด
การเปลี่ยนแปลงตัวแปรที่จะถูกละเว้นโดยผู้เรียกของรูทีนย่อย [เพิร์ล #79908]

· ส่งกลับค่าของโอเปอเรเตอร์บางตัว เช่น "ref" บางครั้งอาจใช้ร่วมกันระหว่าง
การเรียกซ้ำไปยังรูทีนย่อยเดียวกัน ทำให้การเรียกภายในแก้ไขค่า
ส่งคืนโดย "ผู้อ้างอิง" ในการโทรภายนอก สิ่งนี้ได้รับการแก้ไขแล้ว

· "__PACKAGE__" และค่าคงที่ที่ส่งคืนชื่อแพ็คเกจหรือคีย์แฮชอยู่ในขณะนี้อย่างสม่ำเสมอ
อ่านเท่านั้น. ใน Perl รุ่นก่อนๆ หลายรุ่น พวกมันกลายพันธุ์ได้ภายใต้บางอย่าง
พฤติการณ์

· การเปิดใช้งานคำเตือน "ใช้ครั้งเดียว" จะไม่ทำให้เกิดข้อขัดข้องในการสร้างวงกลมที่ซ่อนอีกต่อไป
ในเวลารวบรวม ("*Foo::Bar::Foo:: = *Foo::")

· ค่าคงที่ Undef ที่ใช้ใน hash keys ("use constant u => undef; $h{+u}") ไม่อีกต่อไป
สร้างคำเตือน "ไม่ได้กำหนดค่าเริ่มต้น" ในเวลารวบรวม

· การปรับเปลี่ยนเป้าหมายการเปลี่ยนตัวภายในการเปลี่ยนตัวจะไม่ทำให้เกิดอีกต่อไป
เกิดความผิดพลาด

· คำสั่งแรกใน eval สตริงที่ใช้สำหรับการตั้งค่า Pragma ที่ไม่ถูกต้อง
บางครั้งในระหว่างการพับอย่างต่อเนื่อง "eval 'uc chr 0xe0'" จะสุ่มเลือกระหว่าง
ความหมายของ Unicode, byte และ locale สิ่งนี้ได้รับการแก้ไขแล้ว

· การจัดการค่าส่งคืนของตัวกรอง @INC (รูทีนย่อยที่ส่งคืนโดยรูทีนย่อยใน
@INC) ได้รับการแก้ไขในรูปแบบต่างๆ ตัวแปรที่ผูกไว้ก่อนหน้านี้มีการจัดการที่ไม่ถูกต้องและ
การตั้งค่า $_ เป็นข้อมูลอ้างอิงหรือ typeglob อาจส่งผลให้เกิดการขัดข้อง

· ฟังก์ชัน "SvPVbyte" XS ได้รับการแก้ไขให้ทำงานกับสเกลาร์ที่เชื่อมโยงกลับมา
อย่างอื่นที่ไม่ใช่สตริง มันเคยส่งคืน utf8 ในกรณีที่ "SvPV"
หากว่า

· Perl 5.18.0 ทำให้ "--" และ "++" ขัดข้องโดยไม่ตั้งใจบนปกติที่อ้างอิง
นิพจน์ และหยุด "++" จากการแบน vstrings

· "bless" ไม่ตายด้วย "Can't bless non-reference value" ถ้าอาร์กิวเมนต์แรกคือ
การอ้างอิงที่ผูกไว้

· "รีเซ็ต" ด้วยอาร์กิวเมนต์ไม่ข้ามสเกลาร์คัดลอกเมื่อเขียน นิพจน์ทั่วไป
สำเนา typeglob และ vstrings นอกจากนี้ เมื่อพบค่าเหล่านั้นหรือค่าแบบอ่านอย่างเดียว มัน
ไม่ข้ามอาร์เรย์หรือแฮชที่มีชื่อเดียวกันอีกต่อไป

· "รีเซ็ต" ด้วยอาร์กิวเมนต์ตอนนี้จะข้ามสเกลาร์นามแฝงไปยัง typeglobs ("สำหรับ $z (*foo) {
รีเซ็ต "z" }") ก่อนหน้านี้จะทำให้หน่วยความจำเสียหายหรือขัดข้อง

· "ucfirst" และ "lcfirst" ไม่เคารพไบต์ Pragma นี่คือการถดถอย
จาก Perl 5.12 [เพิร์ล #117355]

· เปลี่ยนเป็น "UNIVERSAL::DESTROY" ตอนนี้อัปเดตแคช DESTROY ในทุกคลาส แทนที่จะเป็น
ทำให้คลาสที่มีอ็อบเจกต์ถูกทำลายไปแล้วเพื่อใช้งานซับย่อยแบบเก่าต่อไป
นี่คือการถดถอยใน Perl 5.18 [เพิร์ล #114864]

· คำเตือนการเลิกใช้งานที่เป็นเท็จ-บวกที่ทราบทั้งหมด "การใช้ '\' อย่างไร้ประโยชน์;
ไม่หนีอักขระเมตา '%c'" ที่เพิ่มใน Perl 5.18.0 ออกแล้ว [perl
#119101]

· ค่าของ $^E จะถูกบันทึกในเครื่องจัดการสัญญาณบน Windows [เพิร์ล #85104]

· ตัวจัดการไฟล์คำศัพท์ (เช่นใน "open my $fh...") มักจะตั้งชื่อตาม
แพ็คเกจปัจจุบันและชื่อของตัวแปร เช่น "main::$fh" ภายใต้การเรียกซ้ำ the
filehandle สูญเสียส่วน "$fh" ของชื่อ สิ่งนี้ได้รับการแก้ไขแล้ว

· ค่าที่ไม่ได้กำหนดค่าเริ่มต้นที่ส่งคืนโดย XSUB จะไม่ได้รับการยกเว้นจากการกำหนดค่าที่ยังไม่ได้กำหนดค่าอีกต่อไป
คำเตือน [เพิร์ล #118693]

· "elsif ("")" จะไม่สร้างคำเตือนเกี่ยวกับบริบทที่เป็นโมฆะอย่างไม่ถูกต้องอีกต่อไป [เพิร์ล
#118753]

· การส่ง "undef" ไปยังรูทีนย่อยจะทำให้ @_ มี undefined แบบอ่านอย่างเดียวเหมือนกัน
สเกลาร์ที่ "undef" ส่งคืน นอกจากนี้ "exists $_[0]" จะคืนค่า true if
"undef" เป็นอาร์กิวเมนต์แรก [เพิร์ล #7508, #109726]

· การส่งผ่านองค์ประกอบอาร์เรย์ที่ไม่มีอยู่จริงไปยังรูทีนย่อยมักจะไม่ autovivify
เว้นแต่รูทีนย่อยจะแก้ไขอาร์กิวเมนต์ สิ่งนี้ทำงานไม่ถูกต้องกับ
ดัชนีเชิงลบและองค์ประกอบที่ไม่มีอยู่ในอาร์เรย์ องค์ประกอบจะ
มีชีวิตชีวาขึ้นมาทันที การทำให้มีชีวิตชีวาล่าช้าได้รับการขยายเพื่อทำงานร่วมกับ
เหล่านั้น. [เพิร์ล #118691]

· กำหนดการอ้างอิงหรือ globs ให้กับสเกลาร์ที่ส่งคืนโดย $#foo หลังจาก @foo array มี
ถูกปล่อยให้เป็นอิสระไม่ทำให้การยืนยันล้มเหลวในการสร้างการดีบักและหน่วยความจำรั่วอีกต่อไป
งานสร้างปกติ

· บนแพลตฟอร์ม 64 บิต ช่วงขนาดใหญ่เช่น 1..1000000000000 จะไม่พังอีกต่อไปแต่กินจนหมด
ความทรงจำทั้งหมดของคุณแทน [เพิร์ล #119161]

· "__DATA__" ตอนนี้ใส่หมายเลขอ้างอิง "DATA" ในแพ็คเกจที่ถูกต้อง แม้ว่าปัจจุบัน
แพ็คเกจถูกเปลี่ยนชื่อผ่านการมอบหมาย glob

· เมื่อ "ตาย", "สุดท้าย", "ถัดไป", "ทำซ้ำ", "ไป" และ "ออก" คลี่คลายขอบเขตได้
สำหรับ "DESTROY" ซ้ำ ๆ เพื่อเรียกรูทีนย่อยหรือรูปแบบที่กำลังเป็นอยู่
ออก ในกรณีนั้น บางครั้งตัวแปรศัพท์ภายในย่อยก็จะเริ่มต้นขึ้น
มีค่าจากการเรียกภายนอก แทนที่จะไม่ได้กำหนดตามที่ควร นี้
ได้รับการแก้ไขแล้ว [เพิร์ล #119311]

· ${^MPEN} ไม่ถือเป็นคำพ้องความหมายสำหรับ ${^MATCH} อีกต่อไป

· Perl พยายามหนักขึ้นเล็กน้อยเพื่อคืนหมายเลขบรรทัดที่ถูกต้องใน "(ผู้โทร)[2]"
[เพิร์ล #115768]

· หมายเลขบรรทัดภายในตัวดำเนินการที่เหมือนเครื่องหมายคำพูดหลายบรรทัดถูกรายงานอย่างถูกต้องแล้ว [เพิร์ล
#3643]

· คำสั่ง "#line" ภายในโค้ดที่ฝังอยู่ในโอเปอเรเตอร์ที่เหมือนใบเสนอราคาได้รับการเคารพแล้ว

· หมายเลขบรรทัดจะถูกต้องภายในเอกสาร here-doc ที่สองเมื่อมีเครื่องหมาย here-doc สองตัว
เกิดขึ้นในแนวเดียวกัน

· การเพิ่มประสิทธิภาพใน Perl 5.18 ทำให้สมมติฐานที่ไม่ถูกต้องทำให้เกิดการโต้ตอบที่ไม่ดีกับ
โมดูล Devel::CallParser CPAN หากโมดูลถูกโหลดแล้วตัวแปรศัพท์
ประกาศในคำสั่งแยกต่างหากตามรายการ "my(...)" อาจล้มเหลวในการล้างบน
ขอบเขตออก

· การเรียก &xsub และ "goto &xsub" อนุญาตให้รูทีนย่อยที่เรียกสร้างองค์ประกอบอัตโนมัติของ
-

· &xsub และ "goto &xsub" จะไม่ขัดข้องอีกต่อไปหาก *_ ไม่ได้กำหนดไว้และไม่มีรายการ ARRAY
(เช่น @_ ไม่มีอยู่)

· &xsub และ "goto &xsub" ใช้งานได้กับ tie @_

· ตัวระบุที่ยาวเกินไปจะไม่ทำให้เกิดบัฟเฟอร์ล้น (และหยุดทำงาน) อีกต่อไป เขาเริ่มกันแล้ว
ทำเช่นนั้นใน Perl 5.18

· คำเตือน "ค่าสเกลาร์ @hash{foo} เขียนได้ดีกว่า $hash{foo}" ไปไกลแล้ว
ผลบวกลวงน้อยลง โดยเฉพาะ @hash{+function_returning_a_list} และ @hash{ qw
"foo bar baz" } ไม่เตือนแล้ว เช่นเดียวกับสไลซ์อาร์เรย์ [เพิร์ล #28380,
#114024]

· "$! = EINVAL; waitpid(0, WNOHANG);" ไม่เข้าสู่วงรอบอนันต์ภายในอีกต่อไป
[เพิร์ล #85228]

· ข้อผิดพลาดในการแบ่งส่วนที่เป็นไปได้ในการทำซ้ำ filehandle ได้รับการแก้ไขแล้ว

· รูทีนย่อยใน @INC สามารถส่งคืนการอ้างอิงไปยังสเกลาร์ที่มีชื่อย่อ
เนื้อหาของไฟล์. อย่างไรก็ตาม สเกลาร์นั้นเป็นอิสระก่อนเวลาอันควรหากไม่ได้อ้างอิง
ที่อื่นให้ผลแบบสุ่ม

· "สุดท้าย" ไม่คืนค่าที่คำสั่งเดียวกันได้สะสมอีกต่อไป แก้ไข
เหนือสิ่งอื่นใดข้อบกพร่องที่มีมายาวนานที่ "กด @a สุดท้าย" จะพยายามกลับมา
@a คัดลอกเหมือนสเกลาร์ในกระบวนการและทำให้เกิดข้อผิดพลาด "Bizarre
สำเนาของ ARRAY ในตอนสุดท้าย" [perl #3112]

· ในบางกรณี การปิดไฟล์จัดการที่เปิดไปยังไพพ์ไปยังหรือจากกระบวนการซึ่งมี
ถูกทำซ้ำเป็นหมายเลขอ้างอิงมาตรฐาน จะเรียกตัวห่อหุ้ม waitpid ภายในของ perl
ด้วยเลขศูนย์ ด้วยการแก้ไขสำหรับ [perl #85228] ศูนย์ pid นี้ถูกส่งไปยัง
"waitpid" ซึ่งอาจปิดกั้นกระบวนการ กระบวนการนี้รอกระบวนการศูนย์อีกต่อไป
เกิดขึ้น [เพิร์ล #119893]

· "เลือก" ใช้เพื่อละเว้นเวทย์มนตร์ในอาร์กิวเมนต์ที่สี่ (หมดเวลา) นำไปสู่เอฟเฟกต์
เช่น "เลือก" บล็อกไปเรื่อย ๆ มากกว่าเวลานอนที่คาดไว้ นี้มี
ตอนนี้ได้รับการแก้ไขแล้ว [เพิร์ล #120102]

· ชื่อคลาสใน "for my class $foo" แยกวิเคราะห์อย่างถูกต้องแล้ว ในกรณีของ
อักขระตัวที่สองของชื่อคลาสที่ตามด้วยตัวเลข (เช่น 'a1b') ซึ่งใช้เพื่อ
ให้ข้อผิดพลาด "ไม่มี $ ในตัวแปรลูป" [เพิร์ล #120112]

· Perl 5.18.0 ไม่อนุญาต "-bareword" โดยไม่ได้ตั้งใจภายใต้ "ใช้เข้มงวด" และ "ใช้จำนวนเต็ม"
สิ่งนี้ได้รับการแก้ไขแล้ว [เพิร์ล #120288]

· "-a" ที่ต้นบรรทัด (หรือยัติภังค์ที่มีตัวอักษรตัวเดียวที่ไม่ใช่ filetest
โอเปอเรเตอร์) จะไม่สร้าง 'การใช้ "-a" ที่ผิดพลาดโดยไม่มีวงเล็บ is . อีกต่อไป
คำเตือนที่คลุมเครือ' [เพิร์ล #120288]

· บริบท Lvalue ได้รับการเผยแพร่อย่างเหมาะสมในบล็อกเปล่าและบล็อก "ถ้า" และ "อื่น"
ในรูทีนย่อย lvalue ก่อนหน้านี้ บางครั้งอาร์เรย์และแฮชอาจไม่ถูกต้อง
แบนเมื่อส่งคืนในบริบทรายการ lvalue หรือข้อผิดพลาด "คัดลอกที่แปลกประหลาด" อาจเกิดขึ้น
[เพิร์ล #119797]

· บริบท Lvalue ได้รับการเผยแพร่ไปยังสาขาของ "||" และ "&&" (และ .ของพวกเขา
เทียบเท่าตัวอักษร "หรือ" และ "และ") ซึ่งหมายความว่า "foreach (pos $x || pos $y)
{...}" อนุญาตให้แก้ไข "pos" ผ่าน $_

· "stat" และ "readline" จำหมายเลขอ้างอิงสุดท้ายที่ใช้ อดีตสำหรับพิเศษ "_"
filehandle ส่วนหลังสำหรับ "${^LAST_FH}" "eval "*foo if 0"" โดยที่ *foo เป็นคนสุดท้าย
แฮนเดิลที่ส่งผ่านไปยัง "stat" หรือ "readline" อาจทำให้ handle นั้นถูกลืมหาก
ที่จับยังไม่ได้เปิด สิ่งนี้ได้รับการแก้ไขแล้ว

· กรณีต่างๆ ของ "delete $::{a}", "delete $::{ENV}" เป็นต้น ทำให้เกิดข้อขัดข้อง
แก้ไขแล้ว. [เพิร์ล #54044]

· การตั้งค่า $! ไปที่ EACCESS ก่อนเรียก "require" อาจส่งผลต่อพฤติกรรมของ "require"
สิ่งนี้ได้รับการแก้ไขแล้ว

· ข้อความเตือน "ไม่สามารถใช้ \1 เพื่อหมายถึง $1 ในนิพจน์" ปรากฏขึ้นเฉพาะบน
ส่วนขวามือ (ทดแทน) ของการทดแทน เมื่อก่อนอาจเกิดขึ้นในรหัส
ฝังอยู่ทางด้านซ้ายมือ หรือในโอเปอเรเตอร์ที่คล้ายเครื่องหมายคำพูดอื่นๆ

· การให้พรในการอ้างอิง ("bless $thisref, $thatref") ไม่ได้รับอนุญาตมานานแล้ว แต่
สเกลาร์เวทย์มนตร์สำหรับวินาทีเช่น $/ และเสมอกันได้รับการยกเว้น พวกเขาไม่ได้อีกต่อไป
เป็น. [เพิร์ล #119809]

· การให้พรในการอ้างอิงได้รับอนุญาตโดยบังเอิญใน 5.18 หากอาร์กิวเมนต์ระดับเป็น
การอ้างอิงที่ได้รับพรด้วยแคชวิธีการเก่า (เช่นคลาสที่มีการกำหนดย่อยที่กำหนดไว้
ตั้งแต่การเรียกเมธอดครั้งล่าสุด) พวกเขาไม่ได้รับอนุญาตอีกครั้งเช่นเดียวกับใน 5.16

· "$x->{key}" โดยที่ $x ถูกประกาศเป็น "my Class $x" จะไม่หยุดทำงานอีกต่อไปหาก
Class::FIELDS stub รูทีนย่อย Class::FIELDS ได้รับการประกาศแล้ว

· @$obj{'key'} และ "${$obj}{key}" เคยได้รับการยกเว้นจากการตรวจสอบฟิลด์เวลาคอมไพล์
("ไม่มีฟิลด์คลาสดังกล่าว" ดูฟิลด์) แต่ไม่มีอีกต่อไป

· องค์ประกอบอาร์เรย์ที่ไม่มีอยู่ซึ่งมีดัชนีขนาดใหญ่ส่งผ่านไปยังรูทีนย่อยที่เชื่อมโยง
อาร์เรย์แล้วพยายามเข้าถึงองค์ประกอบไม่ส่งผลให้เกิดความผิดพลาดอีกต่อไป

· การประกาศ stub รูทีนย่อยชื่อ NEGATIVE_INDICES จะไม่ทำให้อาร์เรย์เชิงลบอีกต่อไป
ดัชนีหยุดทำงานเมื่อแพ็กเกจปัจจุบันเป็นคลาสอาร์เรย์ที่ผูก

· ประกาศ stub ย่อย "require", "glob" หรือ "do" ในแพ็คเกจ CORE::GLOBAL::
ไม่ทำการคอมไพล์การโทรไปยังฟังก์ชันที่เกี่ยวข้องอีกต่อไป

· นามแฝง CORE::GLOBAL:: ฟังก์ชั่นกับค่าคงที่หยุดทำงานใน Perl 5.10 แต่มี
ตอนนี้ได้รับการแก้ไขแล้ว

· เมื่อ "`...`" หรือ "qx/.../" เรียกการแทนที่ "readpipe" การแก้ไขแบบ double-quotish
ตอนนี้เกิดขึ้น เช่นเดียวกับกรณีที่ไม่มีการแทนที่ ก่อนหน้านี้การปรากฏตัวของ an
การแทนที่จะทำให้ตัวดำเนินการเหมือนคำพูดเหล่านี้ทำหน้าที่เหมือน "q{}", ระงับ
การแก้ไข [เพิร์ล #115330]

· "<<<`...`" here-docs (โดยมี backticks เป็นตัวคั่น) ตอนนี้เรียกว่า "readpipe" overrides
[เพิร์ล #119827]

· "&CORE::exit()" และ "&CORE::die()" จะเคารพคำใบ้ vmsish

· Undefining a glob ที่ทริกเกอร์วิธีการ DESTROY ที่ไม่ได้กำหนด glob เดียวกันในตอนนี้
ปลอดภัย. มันเคยสร้างคำเตือน "พยายามปล่อยตัวชี้ glob ที่ไม่อ้างอิง" และ
หน่วยความจำรั่ว

· หากการกำหนดนิยามใหม่ของรูทีนย่อย ("eval 'sub foo{}'" หรือ "newXS" สำหรับโค้ด XS) ทริกเกอร์ a
วิธี DESTROY บน sub ที่ถูกนิยามใหม่ และ method นั้นกำหนด a
รูทีนย่อยไปยังช่องเดียวกัน ("*foo = sub {}") $_[0] จะไม่ชี้ไปที่ a อีกต่อไป
สเกลาร์อิสระ ขณะนี้ DESTROY ล่าช้าจนกว่าจะมีการติดตั้งรูทีนย่อยใหม่

· บน Windows Perl จะไม่โทรอีกต่อไป ปิดแฮนเดิล() บนที่จับซ็อกเก็ต สิ่งนี้ทำให้
การดีบักบน Windows ง่ายขึ้นด้วยการลบข้อยกเว้นการจัดการที่ไม่ดีที่ไม่เกี่ยวข้องบางอย่าง มัน
ยังแก้ไขสภาพการแข่งขันที่ทำให้ฟังก์ชั่นซ็อกเก็ตสุ่มล้มเหลวในกระบวนการ Perl
ด้วย OS หลายเธรด และการทดสอบที่ล้มเหลวใน
dist/IO/t/cachepropagate-tcp.t. [เพิร์ล #120091/118059]

· รูปแบบที่เกี่ยวข้องกับสตริงที่เข้ารหัส UTF-8 หรือรูปแบบแปลก ๆ เช่น ความสัมพันธ์ การโอเวอร์โหลด หรือ
การอ้างอิงแบบสตริง (และใน perls ล่าสุด NOK vars บริสุทธิ์) โดยทั่วไปจะทำผิด
สิ่งที่อยู่ในรูปแบบเมื่อ var ถูกมองว่าเป็นสตริงและสับซ้ำ ๆ เช่นใน
"^<<<~~" และคล้ายกัน ตอนนี้ได้รับการแก้ไขแล้ว [เพิร์ล
#33832/45325/113868/119847/119849/119851]

· "semctl(..., SETVAL, ...)" จะตั้งค่าสัญญาณเป็น 32 บิตบนสุดของข้อมูลที่ให้มา
จำนวนเต็มแทนที่จะเป็น 32 บิตด้านล่างบนระบบ big-endian 64 บิต [เพิร์ล #120635]

· "readdir()" ตอนนี้ตั้งค่าเพียง $! ในข้อผิดพลาด $! ไม่ได้ตั้งค่าเป็น "EBADF" อีกต่อไปเมื่อถึงเวลานั้น
การสิ้นสุด "undef" จะถูกอ่านจากไดเร็กทอรี เว้นแต่การเรียกของระบบจะตั้งค่า $! [เพิร์ล
#118651]

· &CORE::glob จะไม่ทำให้เกิดการหยุดทำงานชั่วคราวอีกต่อไปเนื่องจากการได้รับสแต็คของ Perl
เสียหาย [เพิร์ล #119993]

· "เปิด" พร้อมเลเยอร์ที่โหลดโมดูล (เช่น "<:encoding(utf8)") ไม่ทำงาน .อีกต่อไป
ความเสี่ยงของการหยุดทำงานเนื่องจากความเสียหายของสแต็ก

· Perl 5.18 หยุดการโหลดอัตโนมัติผ่านการเรียกใช้เมธอด "->SUPER::foo" โดยค้นหา AUTOLOAD
จากแพ็คเกจปัจจุบันแทนที่จะเป็นซูเปอร์คลาสของแพ็คเกจปัจจุบัน นี้ได้รับ
แก้ไขแล้ว. [เพิร์ล #120694]

· ข้อผิดพลาดที่มีมายาวนานทำให้เกิด "do {} จนถึง CONSTANT" โดยที่ค่าคงที่มีค่า true
ค่าการอ่านหน่วยความจำที่ไม่ได้ปันส่วนได้รับการแก้ไขแล้ว ซึ่งมักจะเกิดขึ้นหลังจาก
ข้อผิดพลาดทางไวยากรณ์ ใน Perl เวอร์ชันก่อนๆ มีการขัดข้องเป็นระยะๆ [เพิร์ล #72406]

· แก้ไข HP-UX $! ความล้มเหลว. HP-UX ข้อผิดพลาด () ส่งคืนสตริงว่างสำหรับข้อผิดพลาดที่ไม่รู้จัก
รหัส. สิ่งนี้ทำให้การยืนยันล้มเหลวภายใต้การสร้าง DEBUGGING ตอนนี้แทน
ส่งคืนสตริงสำหรับ "$!" มีข้อความระบุว่ารหัสสำหรับข้อผิดพลาดที่ไม่รู้จัก

· องค์ประกอบที่เชื่อมโยงแยกกันของ @INC (เช่นใน "tie $INC[0]...") ได้รับการจัดการอย่างถูกต้องแล้ว
ก่อนหน้านี้ ไม่ว่า sub ที่ส่งคืนโดยองค์ประกอบที่ผูกไว้นั้นจะถือว่าเป็น sub
ขึ้นอยู่กับว่า FETCH ได้เกิดขึ้นก่อนหน้านี้หรือไม่

· "getc" บนหมายเลขอ้างอิงขนาดไบต์หลังจากใช้ตัวดำเนินการ "getc" เดียวกันบน utf8
ตัวจัดการที่ใช้จัดการกับไบต์เป็น utf8 ส่งผลให้มีพฤติกรรมเอาแน่เอานอนไม่ได้ (เช่น malformed
คำเตือน UTF-8)

· เริ่มต้น "{" ที่จุดเริ่มต้นของบรรทัดอาร์กิวเมนต์รูปแบบมักจะถูกตีความว่าเป็น
จุดเริ่มต้นของบล็อกก่อน v5.18 ใน Perl v5.18 มันเริ่มถูกปฏิบัติเหมือน
โทเค็นที่คลุมเครือ parser จะเดาว่ามันควรจะเป็นนิรนามหรือไม่
ตัวสร้างแฮชหรือบล็อกตามเนื้อหา ตอนนี้พฤติกรรมก่อนหน้านี้มี
ได้รับการบูรณะ [เพิร์ล #119973]

· ใน Perl v5.18 "undef *_; goto &sub" และ "local *_; goto &sub" เริ่มขัดข้อง นี้
ได้รับการแก้ไขแล้ว [เพิร์ล #119949]

· Backticks (" `` " หรือ " qx// ") รวมกับหลายเธรดใน Win32 อาจส่งผลให้
เอาต์พุตที่ส่งไปยัง stdout บนเธรดหนึ่งถูกดักจับโดย backticks ของคำสั่งภายนอก
ในกระทู้อื่น

สิ่งนี้อาจเกิดขึ้นสำหรับกระบวนการหลอกปลอมเช่นกัน เนื่องจาก pseudo-fork ของ Win32 คือ
ดำเนินการในแง่ของเธรด [เพิร์ล #77672]

· "open $fh, ">+", undef" ไม่รั่วไหลของหน่วยความจำอีกต่อไปเมื่อตั้งค่า TMPDIR แต่ชี้ไปที่ a
ไดเร็กทอรีไฟล์ชั่วคราวไม่สามารถสร้างได้ [perl #120951]

· " for ( $h{k} || '' ) " จะไม่ทำให้ $h{k} มีชีวิตชีวาอีกต่อไป [เพิร์ล #120374]

· บนเครื่อง Windows ตอนนี้ Perl จะจำลองการใช้สภาพแวดล้อม POSIX สำหรับ locale
การเริ่มต้น. ก่อนหน้านี้ สภาพแวดล้อมถูกละเลย ดู "สิ่งแวดล้อม" ใน
เพอร์โลแคล

· แก้ไขข้อผิดพลาดเมื่อทำลาย GLOB ที่อ้างอิงตนเอง [เพิร์ล #121242]

ที่รู้จักกัน ปัญหา


· IO::Socket เป็นที่รู้จักว่าล้มเหลวในการทดสอบบน AIX 5.3 มีแพทช์
ในตัวติดตามคำขอ #120835
ซึ่งอาจนำไปใช้กับการเปิดตัวในอนาคต

· เป็นที่ทราบกันว่าโมดูลต่อไปนี้มีความล้มเหลวในการทดสอบกับ Perl เวอร์ชันนี้
แพตช์ถูกส่งไปแล้ว ดังนั้นหวังว่าจะมีการเปิดตัวใหม่เร็วๆ นี้:

· Data::Structure::Util เวอร์ชัน 0.15

· HTML::StripScripts เวอร์ชัน 1.05

· รายการ::รวบรวมเวอร์ชัน 0.08

ข่าวร้าย


ไดอาน่า โรซา วัย 27 ปี จากรีโอเดจาเนโร ไปพักผ่อนระยะยาวของเธอเมื่อวันที่ 10 พฤษภาคม 2014 พร้อมด้วย
อูฐหรูหราที่เธอแขวนไว้บนหน้าจอคอมพิวเตอร์ตลอดเวลา เธอช่างเร่าร้อน
แฮ็กเกอร์ Perl ที่รักภาษาและชุมชน และไม่เคยพลาดงาน Rio.pm
เธอเป็นศิลปินตัวจริง หลงใหลในการเขียนโค้ด ร้องเพลง arias และกราฟฟิตี้
ผนัง เราจะไม่ลืมคุณ

Greg McCarroll เสียชีวิตเมื่อวันที่ 28 สิงหาคม 2013

เกร็กเป็นที่รู้จักกันดีด้วยเหตุผลหลายประการ เขาเป็นหนึ่งในผู้จัดงานครั้งแรก
YAPC::Europe ซึ่งปิดท้ายด้วยการประมูลที่ไม่ได้กำหนดไว้ซึ่งเขาพยายามอย่างเมามัน
เพิ่มเงินพิเศษเพื่อหลีกเลี่ยงการสูญเสียการประชุม เป็นเกร็กที่ผิดพลาด
มาถึงลอนดอน. น. ประชุมสายหนึ่งสัปดาห์ หลายปีต่อมาเขาเป็นคนขาย
ทางเลือกของวันประชุมอย่างเป็นทางการในการประมูล YAPC::Europe และในที่สุดก็รุ่งโรจน์
ผู้นำลอนดอน.pm เขาได้สืบทอดความสับสนที่ไม่เคารพที่เขาสร้างขึ้น

คอยช่วยเหลือเสมอ เป็นมิตร และมองโลกในแง่ดีอย่างร่าเริง คุณจะพลาดแต่ไม่มีวัน
ลืม.

กิตติกรรมประกาศ


Perl 5.20.0 หมายถึงการพัฒนาประมาณ 12 เดือนตั้งแต่ Perl 5.18.0 และ
มีการเปลี่ยนแปลงประมาณ 470,000 บรรทัดใน 2,900 ไฟล์จากผู้เขียน 124 คน

ไม่รวมไฟล์ที่สร้างอัตโนมัติ เอกสารประกอบ และเครื่องมือเผยแพร่ มีประมาณ
การเปลี่ยนแปลง 280,000 บรรทัดเป็นไฟล์ 1,800 .pm, .t, .c และ .h

Perl เติบโตอย่างต่อเนื่องในทศวรรษที่สามด้วยชุมชนผู้ใช้ที่มีชีวิตชีวา
และนักพัฒนา เป็นที่ทราบกันดีว่าบุคคลต่อไปนี้มีส่วนในการปรับปรุงที่
กลายเป็น Perl 5.20.0:

อารอน เครน, อภิจิตต์ เมนอน-เซน, อบิเกล, อาบีร์ วิการ์, อลัน ฮักไก อลาวี, อลัน ฮูริฮาน,
อเล็กซานเดอร์ โวโรนอฟ, อเล็กซานเดอร์ ชิออร์นี่, แอนดี้ โดเฮอร์ตี้, อันโน ซีเกล, อริสโตเติล พากัลต์ซิส,
Arthur Axel 'fREW' Schmidt, Brad Gilbert, Brendan Byrd, Brian Childs, Brian Fraser, ไบรอัน
Gottreu, Chris 'BinGOs' Williams, Christian Millour, Colin Kuskie, Craig A. Berry, Dabrien
'Dabe' Murphy, Dagfinn Ilmari Mannsaaker, Daniel Dragan, ดาริน แม็คไบรด์, เดวิด โกลเด้น,
เดวิด ลีดบีเตอร์, เดวิด มิทเชล, เดวิด นิโคล, เดวิด สไตน์บรันเนอร์, เดนนิส คาร์เซเมคเกอร์,
โดมินิก ฮาร์กรีฟส์, เอ็ด เอวิส, เอริก ไบรน์, อีวาน แซ็คส์, คุณพ่อคริสซอสโตมอส, ฟลอเรียน แร็กวิทซ์,
ฟรองซัวส์ แปร์ราด, เกวิน เชลลีย์, กิเดียน อิสราเอล ซูซา, กิสเล อาส, เกรแฮม คน็อป, เอช. เมไรจ์น
แบรนด์, Hauke ​​D, Heiko Eissfeldt, Hiroo Hayashi, Hojung Youn, James E Keenan, Jarkko
ฮิเอทานิเอมิ, เจอร์รี่ ดี. เฮดเดน, เจส โรบินสัน, เจสซี่ ลูเออร์ส, โยฮัน โวม็องส์, จอห์น การ์ดิเนอร์
ไมเยอร์ส, จอห์น กู๊ดเยียร์, จอห์น พี. ลินเดอร์แมน, จอห์น พีค็อก, คาฟคา, คัง-มิน หลิว, กะเหรี่ยง
เอเธอริดจ์, คาร์ล วิลเลียมสัน, คีดี้ คิม, เคนท์ เฟรดริก, เควิน ดอว์สัน, เควิน ฟัลโคน, เควิน
ไรด์, ลีออน ทิมเมอร์แมนส์, ลูคัส ไม, มาร์ค ซิมป์สัน, มาร์เซล กรูเนาเออร์, มาร์โค พีเรบูม, มาร์คัส
Holland-Moritz, Mark Jason Dominus, Martin McGrath, Matthew Horsfall, Max Maischein, ไมค์
โดเฮอร์ตี้, มอริตซ์ เลนซ์, นาธาน เกล็นน์, นาธาน ตราปุซซาโน, นีล บาวเวอร์, นีล วิลเลียมส์,
Nicholas Clark, Niels Thykier, Niko Tyni, Olivier Mengue, Owain G. Ainsworth, พอล กรีน,
พอล จอห์นสัน, ปีเตอร์ จอห์น แอคแลม, ปีเตอร์ มาร์ตินี, ปีเตอร์ แรบบิทสัน, ปีเตอร์ ปิซาเอ็กซ์, ฟิลิป
Boulain, Philip Guenther, Piotr Roszatycki, Rafael Garcia-Suarez, Reini Urban, รูเบน
โธมัส, ริคาร์โด้ ซิญเนส, รุสลัน ซาคิรอฟ, เซอร์เกย์ อเล็กเซฟ, ชิราคาตะ เคนทาโร่, ชโลมี ฟิช,
สลาเวน เรซิช, สไมเลอร์, สเตฟเฟน มูลเลอร์, สตีฟ เฮย์, ซัลลิแวน เบ็ค, โธมัส ซิบลีย์, โทเบียส
ลีช, โทบี้ อิงค์สเตอร์, โทคุฮิโระ มัตสึโนะ, ทอม คริสเตียนเซ่น, ทอม ฮูกินส์, โทนี่ คุก, วิคเตอร์
เอฟิมอฟ, วิคเตอร์ ตูร์สกี, วลาดิมีร์ ทิโมฟีฟ, ยามาชิน่า ฮิโอ, อีฟส์ ออร์ตัน, เซฟรัม, สบาน
อัมบรุส, AEvar Arnfjoer` Bjarmason.

รายการด้านบนนี้เกือบจะไม่สมบูรณ์อย่างแน่นอนเนื่องจากสร้างขึ้นโดยอัตโนมัติจาก
ประวัติการควบคุมเวอร์ชัน โดยเฉพาะอย่างยิ่งจะไม่รวมชื่อของ (อย่างมาก
ชื่นชม) ผู้ร่วมให้ข้อมูลที่รายงานปัญหาไปยังตัวติดตามจุดบกพร่องของ Perl

การเปลี่ยนแปลงหลายอย่างที่รวมอยู่ในเวอร์ชันนี้มีต้นกำเนิดในโมดูล CPAN ที่รวมอยู่ใน
แกนกลางของ Perl เรารู้สึกขอบคุณต่อชุมชน CPAN ทั้งหมดที่ช่วยให้ Perl เติบโต

สำหรับรายชื่อผู้มีส่วนร่วมทางประวัติศาสตร์ของ Perl ทั้งหมด โปรดดูที่ ผู้เขียน
ไฟล์ในการกระจายแหล่งที่มาของ Perl

การรายงาน Bugs


หากคุณพบว่าสิ่งที่คุณคิดว่าเป็นข้อบกพร่อง คุณอาจตรวจสอบบทความที่โพสต์ล่าสุดใน
กลุ่มข่าว comp.lang.perl.misc และฐานข้อมูลจุดบกพร่องของ Perl ที่ http://rt.perl.org/perlbug/ .
อาจมีข้อมูลได้ที่ http://www.perl.org/ , หน้าแรกของ Perl

หากคุณเชื่อว่าคุณมีข้อบกพร่องที่ไม่ได้รายงาน โปรดเรียกใช้โปรแกรม perlbug ที่มาพร้อมกับ
การปล่อยตัวของคุณ อย่าลืมตัดแต่งบั๊กของคุณให้เป็นกรณีทดสอบเล็กๆ แต่เพียงพอ ข้อบกพร่องของคุณ
รายงานพร้อมกับผลลัพธ์ของ "perl -V" จะถูกส่งไปที่ [ป้องกันอีเมล] ที่จะ
วิเคราะห์โดยทีม Perl porting

หากจุดบกพร่องที่คุณกำลังรายงานมีนัยด้านความปลอดภัย ซึ่งทำให้ไม่เหมาะสมต่อ
ส่งไปยังรายชื่อผู้รับจดหมายที่เก็บถาวรแล้วกรุณาส่งไปที่
[ป้องกันอีเมล]. สิ่งนี้ชี้ไปที่การสมัครรับข้อมูลแบบปิด
ซึ่งรวมถึงผู้ให้คำมั่นหลักทั้งหมด ซึ่งจะสามารถช่วยประเมินผลกระทบได้
ของปัญหา หาแนวทางแก้ไข และช่วยประสานงานการออกแพตช์เพื่อ
บรรเทาหรือแก้ไขปัญหาในทุกแพลตฟอร์มที่รองรับ Perl ได้โปรดเท่านั้น
ใช้ที่อยู่นี้สำหรับปัญหาด้านความปลอดภัยใน Perl core ไม่ใช่สำหรับโมดูลอย่างอิสระ
เผยแพร่บน CPAN

ใช้ perl5200delta ออนไลน์โดยใช้บริการ onworks.net


เซิร์ฟเวอร์และเวิร์กสเตชันฟรี

ดาวน์โหลดแอพ Windows & Linux

  • 1
    รับรองความถูกต้อง
    รับรองความถูกต้อง
    AuthPass เป็นรหัสผ่านโอเพ่นซอร์ส
    ผู้จัดการด้วยการสนับสนุนที่เป็นที่นิยมและ
    Keepass ที่พิสูจน์แล้ว (kdbx 3.x และ kdbx 4.x ...
    ดาวน์โหลด authpass
  • 2
    Zabbix
    Zabbix
    Zabbix เป็น open ระดับองค์กร
    โซลูชันการตรวจสอบแบบกระจายแหล่งที่มา
    ออกแบบมาเพื่อตรวจสอบและติดตาม
    ประสิทธิภาพและความพร้อมใช้งานของเครือข่าย
    เซิร์ฟเวอร์ อุปกรณ์...
    ดาวน์โหลด Zabbix
  • 3
    เคดิฟ3
    เคดิฟ3
    ที่เก็บนี้ไม่ได้รับการดูแลอีกต่อไป
    และเก็บไว้เพื่อวัตถุประสงค์ในการเก็บถาวร ดู
    https://invent.kde.org/sdk/kdiff3 for
    รหัสใหม่ล่าสุดและ
    https://download.kde.o...
    ดาวน์โหลด KDiff3
  • 4
    USBLoaderGX
    USBLoaderGX
    USBLoaderGX เป็น GUI สำหรับ
    USB Loader ของ Waninkoko ขึ้นอยู่กับ
    ลิบวิกี จะช่วยให้รายการและ
    เปิดตัวเกม Wii เกม Gamecube และ
    homebrew บน Wii และ WiiU...
    ดาวน์โหลด USBLoaderGX
  • 5
    Firebird
    Firebird
    Firebird RDBMS นำเสนอคุณสมบัติ ANSI SQL
    & ทำงานบน Linux, Windows &
    หลายแพลตฟอร์ม Unix คุณสมบัติ
    การทำงานพร้อมกันและประสิทธิภาพที่ยอดเยี่ยม
    & พลัง...
    ดาวน์โหลด Firebird
  • 6
    Kompozer
    Kompozer
    KompoZer เป็นโปรแกรมแก้ไข HTML wysiwyg โดยใช้
    ฐานโค้ด Mozilla Composer เนื่องจาก
    การพัฒนาของ Nvu ถูกหยุดลง
    ในปี 2005 KompoZer แก้ไขข้อบกพร่องมากมายและ
    เพิ่มเ...
    ดาวน์โหลดโปรแกรม KompoZer
  • เพิ่มเติม»

คำสั่ง Linux

Ad