ນີ້ແມ່ນຄໍາສັ່ງ perl5220delta ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
perl5220delta - ແມ່ນຫຍັງໃຫມ່ສໍາລັບ perl v5.22.0
ລາຍລະອຽດ
ເອກະສານນີ້ອະທິບາຍຄວາມແຕກຕ່າງລະຫວ່າງການປ່ອຍ 5.20.0 ແລະການປ່ອຍ 5.22.0.
ຖ້າຫາກວ່າທ່ານກໍາລັງຍົກລະດັບຈາກການປ່ອຍກ່ອນຫນ້ານີ້ເຊັ່ນ 5.18.0, ທໍາອິດອ່ານ perl5200delta,
ເຊິ່ງອະທິບາຍຄວາມແຕກຕ່າງລະຫວ່າງ 5.18.0 ແລະ 5.20.0.
Core ການຍົກລະດັບ
ໃຫມ່ ເປັນບິດ ຜູ້ປະກອບການ
ສະຖານທີ່ທົດລອງໃຫມ່ໄດ້ຖືກເພີ່ມທີ່ເຮັດໃຫ້ສີ່ຕົວປະຕິບັດການ bitwise ມາດຕະຖານ
("& | ^ ~") ປະຕິບັດຕໍ່ຕົວປະຕິບັດການຂອງເຂົາເຈົ້າຢ່າງຕໍ່ເນື່ອງເປັນຕົວເລກ, ແລະແນະນໍາສີ່ຈຸດໃຫມ່
operators ("&. |. ^. ~.") ທີ່ປະຕິບັດຕໍ່ operands ຂອງເຂົາເຈົ້າຢ່າງຕໍ່ເນື່ອງເປັນສາຍ. ຄືກັນ
ນຳໃຊ້ກັບຕົວແປການມອບໝາຍ ("&= |= ^= &.= |.= ^.=").
ເພື່ອໃຊ້ມັນ, ເປີດໃຊ້ຄຸນສົມບັດ "ບິດບິດ" ແລະປິດການເຕືອນ "ການທົດລອງ:: bitwise".
ປະເພດ. ເບິ່ງ "Bitwise String Operators" ໃນ perlop ສໍາລັບລາຍລະອຽດ. [perl #123466]
.
ໃຫມ່ ເພັດສອງເທົ່າ ປະຕິບັດການ
"<<>>" ແມ່ນຄ້າຍຄື "<>" ແຕ່ໃຊ້ສາມ argument "open" ເພື່ອເປີດແຕ່ລະໄຟລ໌ໃນ @ARGV. ນີ້ຫມາຍຄວາມວ່າ
ວ່າແຕ່ລະອົງປະກອບຂອງ @ARGV ຈະຖືກປະຕິບັດເປັນຊື່ໄຟລ໌ຕົວຈິງ, ແລະ "|foo" ຈະບໍ່ເປັນ.
ຮັບການປິ່ນປົວເປັນທໍ່ເປີດ.
ໃຫມ່ "\b" ຂອບເຂດຊາຍແດນ in ປົກກະຕິ expressions
"qr/\b{gcb}/"
"gcb" ຫຍໍ້ມາຈາກ Grapheme Cluster Boundary. ມັນເປັນຄຸນສົມບັດຂອງ Unicode ທີ່ຊອກຫາ
ຂອບເຂດລະຫວ່າງລໍາດັບຂອງຕົວອັກສອນທີ່ຄ້າຍຄືຕົວອັກສອນດຽວກັບ native
ຜູ້ເວົ້າພາສາ. Perl ມີຄວາມສາມາດໃນການຈັດການກັບສິ່ງເຫຼົ່ານີ້ຜ່ານ "\X" ມາເປັນເວລາດົນນານ.
ລໍາດັບການຫລົບຫນີປົກກະຕິ. ໃນປັດຈຸບັນ, ມີວິທີທາງເລືອກໃນການຈັດການເຫຼົ່ານີ້. ເບິ່ງ "\b{},
\b, \B{}, \B" ໃນ perlrebackslash ສໍາລັບລາຍລະອຽດ.
"qr/\b{wb}/"
"wb" ຫຍໍ້ມາຈາກ Word Boundary. ມັນເປັນຊັບສິນ Unicode ທີ່ຊອກຫາຂອບເຂດລະຫວ່າງ
ຄໍາສັບຕ່າງໆ. ນີ້ແມ່ນຄ້າຍຄືກັນກັບ "\ b" ທໍາມະດາ (ບໍ່ມີວົງເລັບ) ແຕ່ແມ່ນເຫມາະສົມສໍາລັບ
ການປຸງແຕ່ງພາສາທໍາມະຊາດ. ມັນຮູ້, ສໍາລັບການຍົກຕົວຢ່າງ, apostrophes ສາມາດເກີດຂຶ້ນໃນ
ກາງຄໍາສັບຕ່າງໆ. ເບິ່ງ "\b{}, \b, \B{}, \B" ໃນ perlrebackslash ສໍາລັບລາຍລະອຽດ.
"qr/\b{sb}/"
"sb" ຫຍໍ້ມາຈາກ Sentence Boundary. ມັນເປັນຄຸນສົມບັດຂອງ Unicode ເພື່ອຊ່ວຍໃນການວິເຄາະທໍາມະຊາດ
ປະໂຫຍກພາສາ. ເບິ່ງ "\b{}, \b, \B{}, \B" ໃນ perlrebackslash ສໍາລັບລາຍລະອຽດ.
ບໍ່ມີການຈັບພາບ ເປັນປົກກະຕິ ການສະແດງອອກ ທຸງ
ການສະແດງອອກປົກກະຕິໃນປັດຈຸບັນສະຫນັບສະຫນູນທຸງ "/n" ທີ່ປິດການຈັບພາບແລະການຕື່ມຂໍ້ມູນ $1, $2,
ແລະອື່ນໆພາຍໃນກຸ່ມ:
"ສະບາຍດີ" =~ /(ສະບາຍດີ|ສະບາຍດີ)/n; # $1 ບໍ່ໄດ້ຕັ້ງ
ນີ້ແມ່ນເທົ່າກັບການວາງ "?:" ໃນຕອນຕົ້ນຂອງທຸກໆກຸ່ມການຈັບ.
ເບິ່ງ "n" ໃນ perlre ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
"ໃຊ້ re 'ເຂັ້ມງວດ'
ນີ້ໃຊ້ກົດລະບຽບ syntax ທີ່ເຄັ່ງຄັດກັບຮູບແບບການສະແດງອອກປົກກະຕິທີ່ລວບລວມພາຍໃນຂອງມັນ
ຂອບເຂດ. ນີ້ຫວັງເປັນຢ່າງຍິ່ງຈະເຕືອນທ່ານກ່ຽວກັບການພິມຜິດແລະພຶດຕິກໍາທີ່ບໍ່ຕັ້ງໃຈອື່ນໆທີ່
ບັນຫາຄວາມເຂົ້າກັນໄດ້ໃນດ້ານຫຼັງ ປ້ອງກັນບໍ່ໃຫ້ພວກເຮົາລາຍງານໃນການສະແດງຜົນປົກກະຕິປົກກະຕິ
ການລວບລວມ. ເນື່ອງຈາກວ່າພຶດຕິກໍາຂອງນີ້ແມ່ນມີການປ່ຽນແປງໃນການປ່ອຍ Perl ໃນອະນາຄົດ
ດັ່ງທີ່ພວກເຮົາໄດ້ຮັບປະສົບການ, ການນໍາໃຊ້ pragma ນີ້ຈະຍົກສູງການເຕືອນຂອງປະເພດ
"ທົດລອງ::re_strict". ເບິ່ງ 'ເຄັ່ງຄັດ' ໃນ re.
Unicode 7.0 (ມີ ການແກ້ໄຂ) is ໃນປັດຈຸບັນ ສະຫນັບສະຫນູນ
ສໍາລັບລາຍລະອຽດກ່ຽວກັບສິ່ງທີ່ຢູ່ໃນການປ່ອຍນີ້, ເບິ່ງ
<http://www.unicode.org/versions/Unicode7.0.0/>. ລຸ້ນຂອງ Unicode 7.0 ທີ່ມາ
ກັບ Perl ປະກອບມີການແກ້ໄຂທີ່ກ່ຽວຂ້ອງກັບການສ້າງ glyph ໃນພາສາອາຫລັບ (ເບິ່ງ
<http://www.unicode.org/errata/#current_errata>).
"ໃຊ້ ທ້ອງຖິ່ນ" ສາມາດເຮັດໄດ້ ຈຳ ກັດ ທີ່ ທ້ອງຖິ່ນ ປະເພດ ມີ ໄດ້ຮັບຜົນກະທົບ
ໃນປັດຈຸບັນມັນເປັນໄປໄດ້ທີ່ຈະຜ່ານພາລາມິເຕີເພື່ອ "ໃຊ້ທ້ອງຖິ່ນ" ເພື່ອລະບຸຊຸດຍ່ອຍຂອງທ້ອງຖິ່ນ
ໝວດໝູ່ທີ່ຕ້ອງຮູ້ທ້ອງຖິ່ນ, ສ່ວນທີ່ຍັງເຫຼືອບໍ່ໄດ້ຮັບຜົນກະທົບ. ເບິ່ງ "ການນໍາໃຊ້ທ້ອງຖິ່ນ"
pragma" ໃນ perllocale ສໍາລັບລາຍລະອຽດ.
Perl ໃນປັດຈຸບັນ ສະຫນັບສະຫນູນ POSIX 2008 ທ້ອງຖິ່ນ ສະກຸນເງິນ ການເພີ່ມເຕີມ
ໃນເວທີທີ່ສາມາດຈັດການກັບ POSIX.1-2008, hash ກັບຄືນມາໂດຍ
"POSIX::localeconv()" ລວມມີຊ່ອງຂໍ້ມູນສະກຸນເງິນສາກົນທີ່ເພີ່ມໂດຍເວີຊັນນັ້ນ
ມາດຕະຖານ POSIX. ເຫຼົ່ານີ້ແມ່ນ "int_n_cs_precedes", "int_n_sep_by_space",
"int_n_sign_posn", "int_p_cs_precedes", "int_p_sep_by_space", ແລະ "int_p_sign_posn".
ດີກວ່າ heuristics on ເກົ່າກວ່າເກົ່າ ແພລະຕະຟອມ ສໍາລັບການ ການ ກຳ ນົດ ທ້ອງຖິ່ນ UTF-8ness
ໃນເວທີທີ່ບໍ່ປະຕິບັດມາດຕະຖານ C99 ຫຼືມາດຕະຖານ POSIX 2001,
ການກໍານົດວ່າທ້ອງຖິ່ນໃນປະຈຸບັນແມ່ນ UTF-8 ຫຼືບໍ່ແມ່ນຂຶ້ນກັບ heuristics. ພວກນີ້ແມ່ນ
ປັບປຸງໃນການປ່ອຍນີ້.
ນາມແຝງ ຜ່ານ ອ້າງອິງ
ປະຈຸບັນນີ້ຕົວແປ ແລະ routines ຍ່ອຍສາມາດເປັນນາມແຝງໂດຍການມອບໝາຍໃຫ້ອ້າງອີງ:
\$c = \$d;
\&x = \&y;
ນາມແຝງຍັງສາມາດເຮັດສຳເລັດໄດ້ໂດຍການໃຊ້ backslash ກ່ອນ "foreach" iterator
ຕົວແປ; ນີ້ແມ່ນບາງທີ idiom ທີ່ເປັນປະໂຫຍດທີ່ສຸດຄຸນນະສົມບັດນີ້ສະຫນອງ:
foreach \%hash (@array_of_hash_refs) { ... }
ຄຸນນະສົມບັດນີ້ແມ່ນການທົດລອງແລະຕ້ອງໄດ້ຮັບການເປີດໃຊ້ໂດຍຜ່ານ "ການນໍາໃຊ້ຄຸນນະສົມບັດ 'refaliasing'". ມັນຈະ
ເຕືອນເວັ້ນເສຍແຕ່ວ່າປະເພດຄໍາເຕືອນ "experimental::refaliasing" ຖືກປິດໃຊ້ງານ.
ເບິ່ງ "ການມອບຫມາຍການອ້າງອິງ" ໃນ perlref
"ຕົ້ນແບບ" ກັບ no ກະທູ້ທີ່
"prototype()" ທີ່ບໍ່ມີການໂຕ້ຖຽງໃນປັດຈຸບັນ infers $_. [perl #123514]
.
ໃຫມ່ ":const" ລະບົບຍ່ອຍ ຄຸນລັກສະນະ
ຄຸນສົມບັດ "const" ສາມາດຖືກນຳໃຊ້ກັບ routine ຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່. ມັນເຮັດໃຫ້ເກີດການຍ່ອຍໃຫມ່
ຖືກປະຕິບັດໃນທັນທີທຸກຄັ້ງທີ່ມີການສ້າງຕັ້ງ (ie ໃນເວລາທີ່ "ຍ່ອຍ" ສະແດງອອກ
ການປະເມີນຜົນ). ຄ່າຂອງມັນຖືກຈັບແລະໃຊ້ເພື່ອສ້າງ subroutine ຄົງທີ່ໃຫມ່ທີ່ເປັນ
ກັບຄືນ. ຄຸນສົມບັດນີ້ແມ່ນການທົດລອງ. ເບິ່ງ "ຟັງຊັນຄົງທີ່" ໃນ perlsub.
"fileno" ໃນປັດຈຸບັນ ເຮັດວຽກ on ລະບົບ ມືຈັບ
ເມື່ອການສະຫນັບສະຫນູນທີ່ກ່ຽວຂ້ອງມີຢູ່ໃນລະບົບປະຕິບັດການ, "fileno" buildin ໃນປັດຈຸບັນ
ເຮັດວຽກກ່ຽວກັບຕົວຈັດການລະບົບ, ໃຫ້ຜົນຜະລິດ descriptor ໄຟລ໌ທີ່ຕິດພັນໃນວິທີການດຽວກັນກັບສໍາລັບການ
ມືຈັບໄຟລ໌. ໃນລະບົບປະຕິບັດການໂດຍບໍ່ມີການສະຫນັບສະຫນູນດັ່ງກ່າວ, "fileno" ໃນຕົວຈັດການໄດເລກະທໍລີ
ສືບຕໍ່ສົ່ງຄືນຄ່າທີ່ບໍ່ໄດ້ກໍານົດ, ຄືກັບກ່ອນ, ແຕ່ຍັງກໍານົດ $! ເພື່ອຊີ້ໃຫ້ເຫັນວ່າ
ບໍ່ຮອງຮັບການດໍາເນີນງານ.
ໃນປັດຈຸບັນ, ນີ້ໃຊ້ທັງສະມາຊິກ "dd_fd" ໃນໂຄງສ້າງ OS "DIR", ຫຼື a dirfd(3)
ຟັງຊັນຕາມທີ່ລະບຸໄວ້ໃນ POSIX.1-2008.
ບັນຊີລາຍຊື່ ຮູບແບບ of ທໍ່ ເປີດ ປະຕິບັດ ສໍາລັບການ Win32
ບັນຊີລາຍຊື່ຂອງທໍ່:
ເປີດ $fh ຂອງຂ້ອຍ, "-|", "ໂຄງການ", @arguments;
ຕອນນີ້ຖືກປະຕິບັດຢູ່ໃນ Win32. ມັນມີຂໍ້ຈໍາກັດດຽວກັນກັບ "ລະບົບ LIST" ໃນ Win32, ນັບຕັ້ງແຕ່
Win32 API ບໍ່ຍອມຮັບການໂຕ້ຖຽງໂຄງການເປັນບັນຊີລາຍຊື່.
ການມອບຫມາຍ to ບັນຊີລາຍຊື່ ການຄ້າງຫ້ອງ
"(...) x ... " ຕອນນີ້ສາມາດໃຊ້ພາຍໃນລາຍການທີ່ຖືກມອບໝາຍໃຫ້, ຕາບໃດຂ້າງຊ້າຍ
ດ້ານແມ່ນມູນຄ່າທີ່ຖືກຕ້ອງ. ອັນນີ້ອະນຸຍາດໃຫ້ຂຽນ "(undef,undef,$foo) = that_function()"
ເປັນ "((undef)x2, $foo) = that_function()".
Infinity ແລະ ນາ (ບໍ່ແມ່ນຕົວເລກ) ການຈັດການ ປັບປຸງ
ຄ່າຈຸດທີ່ລອຍຕົວສາມາດຖືຄ່າພິເສດເປັນ infinity, negative infinity, ແລະ
NaN (ບໍ່ແມ່ນຕົວເລກ). ໃນປັດຈຸບັນພວກເຮົາຮັບຮູ້ຢ່າງແຂງແຮງແລະຂະຫຍາຍມູນຄ່າໃນ
ການຄິດໄລ່, ແລະຜົນຜະລິດການປົກກະຕິໃຫ້ເຂົາເຈົ້າກັບສະຕຣິງ "Inf, "-Inf" ແລະ "NaN".
ເບິ່ງການປັບປຸງ POSIX ນຳ.
floating ຈຸດ paring ມີ ໄດ້ ປັບປຸງ
ການແຍກວິເຄາະ ແລະພິມຄ່າຈຸດລອຍໄດ້ຖືກປັບປຸງໃຫ້ດີຂຶ້ນ.
ໃນຖານະເປັນຄຸນສົມບັດໃຫມ່ຢ່າງສົມບູນ, hexadecimal ຕົວອັກສອນຈຸດເລື່ອນ (ເຊັ່ນ "0x1.23p-4") ແມ່ນ.
ຕອນນີ້ຮອງຮັບແລ້ວ, ແລະພວກມັນສາມາດອອກໄດ້ດ້ວຍ "printf "%a"". ເບິ່ງ "ຕົວສ້າງມູນຄ່າ Scalar"
ໃນ perldata ສໍາລັບລາຍລະອຽດເພີ່ມເຕີມ.
ການບັນຈຸ ອິນຟິນິຕີ້ or ບໍ່ແມ່ນຕົວເລກ ເຂົ້າໄປໃນ a ລັກສະນະ is ໃນປັດຈຸບັນ ຄວາມຕາຍ
ກ່ອນຫນ້ານີ້, ໃນເວລາທີ່ພະຍາຍາມບັນຈຸ infinity ຫຼືບໍ່ແມ່ນຕົວເລກເຂົ້າໄປໃນຕົວອັກສອນ (ເຊັນ), Perl ຈະ.
ເຕືອນ, ແລະສົມມຸດວ່າທ່ານພະຍາຍາມຫຸ້ມຫໍ່ 0xFF; ຖ້າທ່ານໃຫ້ມັນເປັນການໂຕ້ຖຽງກັບ "chr", "U+FFFD"
ຖືກສົ່ງຄືນ.
ແຕ່ດຽວນີ້, ທຸກໆການກະທຳດັ່ງກ່າວ ("pack", "chr", ແລະ "print '%c'") ສົ່ງຜົນໃຫ້ເກີດຄວາມຜິດພາດຮ້າຍແຮງ.
ທົດລອງ C ຮອຍຫຼັງ API
Perl ໃນປັດຈຸບັນສະຫນັບສະຫນູນ (ຜ່ານ API ລະດັບ C) ດຶງເອົາ backtrace ລະດັບ C (ຄ້າຍຄືກັນກັບສິ່ງທີ່
ສັນຍາລັກດີບັກເຊັ່ນ: gdb do).
backtrace ສົ່ງຄືນການຕິດຕາມ stack ຂອງກອບການໂທ C, ດ້ວຍຊື່ສັນຍາລັກ
(ຊື່ຟັງຊັນ), ຊື່ວັດຖຸ (ເຊັ່ນ "perl"), ແລະຖ້າມັນສາມາດເຮັດໄດ້, ລະຫັດແຫຼ່ງ
ສະຖານທີ່ (ໄຟລ໌:line).
ເວທີທີ່ສະຫນັບສະຫນູນແມ່ນ Linux ແລະ OS X (ບາງ * BSD ອາດຈະເຮັດວຽກຢ່າງຫນ້ອຍບາງສ່ວນ, ແຕ່ພວກມັນ
ຍັງບໍ່ທັນໄດ້ຮັບການທົດສອບ).
ຄຸນສົມບັດຕ້ອງຖືກເປີດໃຊ້ດ້ວຍ "Configure -Dusecbacktrace".
ເບິ່ງ "C backtrace" ໃນ perlhacktips ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
ຄວາມປອດໄພ
Perl is ໃນປັດຈຸບັນ ລວບລວມ ກັບ "-fstack-protector-strong" if ມີ
Perl ໄດ້ຖືກລວບລວມດ້ວຍທາງເລືອກຕ້ານ stack-smashing "-fstack-protector" ນັບຕັ້ງແຕ່
5.10.1. ໃນປັດຈຸບັນ Perl ໃຊ້ຕົວແປໃຫມ່ກວ່າທີ່ເອີ້ນວ່າ "-fstack-protector-strong", ຖ້າມີ.
ໄດ້ ຄວາມປອດໄພ ໂມດູນ ສາມາດເຮັດໄດ້ ອະນຸຍາດໃຫ້ ນອກ ການຫຸ້ມຫໍ່ to be ປ່ຽນແທນ
ການແກ້ໄຂຂໍ້ບົກພ່ອງທີ່ສໍາຄັນ: ແພັກເກດພາຍນອກສາມາດຖືກປ່ຽນແທນໄດ້. ຄວາມປອດໄພໄດ້ຖືກ patched ກັບ 2.38 ກັບ
ກ່າວເຖິງນີ້.
Perl is ໃນປັດຈຸບັນ ສະເຫມີໄປ ລວບລວມ ກັບ "-D_FORTIFY_SOURCE=2" if ມີ
ຕົວເລືອກ 'ການແຂງລະຫັດ' ທີ່ເອີ້ນວ່າ "_FORTIFY_SOURCE", ມີຢູ່ໃນ gcc 4.*, ດຽວນີ້ແມ່ນຢູ່ສະເໝີ.
ໃຊ້ສໍາລັບການລວບລວມ Perl, ຖ້າມີ.
ຈົ່ງຈື່ໄວ້ວ່ານີ້ບໍ່ແມ່ນບາດກ້າວອັນໃຫຍ່ຫຼວງ ເພາະວ່າໃນຫຼາຍເວທີມີຂັ້ນຕອນແລ້ວ
ໄດ້ຖືກປະຕິບັດຫຼາຍປີກ່ອນຫນ້ານີ້: ການແຈກຢາຍ Linux ຈໍານວນຫຼາຍ (ເຊັ່ນ Fedora) ໄດ້ຖືກນໍາໃຊ້ນີ້
ທາງເລືອກສໍາລັບ Perl, ແລະ OS X ໄດ້ບັງຄັບໃຊ້ດຽວກັນສໍາລັບເວລາຫຼາຍປີ.
ບໍ່ເຂົ້າກັນໄດ້ ການປ່ຽນແປງ
ເສັ້ນທາງຍ່ອຍ ລາຍເຊັນ ຍ້າຍ ກ່ອນທີ່ຈະ attributes
ຄຸນສົມບັດລາຍເຊັນຍ່ອຍແບບທົດລອງ, ດັ່ງທີ່ໄດ້ນຳສະເໜີໃນ 5.20, ແຍກລາຍເຊັນຕາມຫຼັງ
ຄຸນລັກສະນະ. ໃນການປ່ອຍນີ້, ປະຕິບັດຕາມຄໍາຄຶດຄໍາເຫັນຈາກຜູ້ໃຊ້ຂອງຄຸນນະສົມບັດທົດລອງ,
ການຈັດຕໍາແຫນ່ງໄດ້ຖືກຍ້າຍເຊັ່ນວ່າລາຍເຊັນເກີດຂື້ນຫຼັງຈາກຊື່ຍ່ອຍ (ຖ້າ
any) ແລະກ່ອນລາຍການຄຸນລັກສະນະ (ຖ້າມີ).
"&" ແລະ "\&" prototypes ຍອມຮັບ ພຽງແຕ່ subs
ຕົວລະຄອນຕົ້ນແບບ "&" ຕອນນີ້ຮັບສະເພາະການຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່ ("sub {...}"), ສິ່ງຕ່າງໆ.
ເລີ່ມຕົ້ນດ້ວຍ "\&", ຫຼື "undef". ໃນເມື່ອກ່ອນມັນຍັງອະນຸຍາດໃຫ້ຜິດພາດ
ການອ້າງອີງເຖິງ arrays, hashes, ແລະລາຍຊື່. [perl #4539]
. [perl #4539]
. [perl #123062]
.
ນອກຈາກນັ້ນ, ຕົວແບບ "\&" ແມ່ນອະນຸຍາດໃຫ້ໂທແບບປົກກະຕິ, ໃນຂະນະທີ່ໃນປັດຈຸບັນມັນພຽງແຕ່ອະນຸຍາດໃຫ້
subroutines: &foo ຍັງຖືກອະນຸຍາດໃຫ້ເປັນການໂຕ້ຖຽງ, ໃນຂະນະທີ່ "&foo()" ແລະ "foo()" ບໍ່ມີຕໍ່ໄປອີກແລ້ວ.
ແມ່ນ. [perl #77860] .
"ໃຊ້ ການເຂົ້າລະຫັດ" is ໃນປັດຈຸບັນ lexical
ຜົນກະທົບຂອງການເຂົ້າລະຫັດ pragma ໃນປັດຈຸບັນໄດ້ຖືກຈໍາກັດຂອບເຂດ lexical. pragma ນີ້ແມ່ນຖືກຍົກເລີກການສະຫມັກ,
ແຕ່ໃນເວລານີ້, ມັນສາມາດສົ່ງຜົນກະທົບທາງລົບຕໍ່ໂມດູນທີ່ບໍ່ກ່ຽວຂ້ອງທີ່ລວມຢູ່ໃນ
ໂຄງການດຽວກັນ; ການປ່ຽນແປງນີ້ແກ້ໄຂໄດ້.
ບັນຊີລາຍຊື່ slices ກັບຄືນ ຫວ່າງເປົ່າ ລາຍການ
ລາຍຊື່ສະໄລ້ດຽວນີ້ສົ່ງຄືນລາຍຊື່ທີ່ຫວ່າງເປົ່າພຽງແຕ່ຖ້າລາຍຊື່ຕົ້ນສະບັບຫວ່າງເປົ່າ (ຫຼືຖ້າມີ
ບໍ່ມີດັດຊະນີ). ໃນເມື່ອກ່ອນ, ບັນຊີລາຍການຈະສົ່ງຄືນບັນຊີລາຍຊື່ເປົ່າຖ້າດັດຊະນີທັງຫມົດຫຼຸດລົງ
ຢູ່ນອກບັນຊີລາຍຊື່ຕົ້ນສະບັບ; ໃນປັດຈຸບັນມັນກັບຄືນບັນຊີລາຍຊື່ຂອງ "undef" ຄ່າໃນກໍລະນີນັ້ນ. [perl
#114498] .
"\N{}" ກັບ a ລໍາດັບ of ຫຼາຍ spaces is ໃນປັດຈຸບັນ a ຄວາມຕາຍ ຄວາມຜິດພາດ
ເຊັ່ນ: "\N{ຫຼາຍຊ່ອງ}" ຫຼື "\N{TRAILING SPACE }". ອັນນີ້ໄດ້ຖືກຍົກເລີກຕັ້ງແຕ່ນັ້ນມາ
v5.18.
"ໃຊ້ ວິທະຍາໄລ '...'" is ໃນປັດຈຸບັນ a ຄວາມຕາຍ ຄວາມຜິດພາດ
ການນໍາເຂົ້າຟັງຊັນຈາກ "UNIVERSAL" ໄດ້ຖືກຍົກເລີກຕັ້ງແຕ່ v5.12, ແລະໃນປັດຈຸບັນແມ່ນຮ້າຍແຮງ
ຄວາມຜິດພາດ. "ໃຊ້ UNIVERSAL" ໂດຍບໍ່ມີການໂຕ້ຖຽງແມ່ນຍັງອະນຸຍາດໃຫ້.
In double-quotish "\ຄX", X ຕ້ອງ ໃນປັດຈຸບັນ be a ສາມາດພິມໄດ້ ASCII ລັກສະນະ
ໃນການປ່ອຍກ່ອນ, ຄວາມລົ້ມເຫຼວທີ່ຈະເຮັດສິ່ງນີ້ໄດ້ເຮັດໃຫ້ເກີດການເຕືອນໄພການປະຕິເສດ.
ການແບ່ງປັນ ໄດ້ tokens "(?" ແລະ "(*" in ປົກກະຕິ expressions is ໃນປັດຈຸບັນ a ຄວາມຕາຍ ການລວບລວມ ຜິດພາດ.
ສິ່ງເຫຼົ່ານີ້ຖືກຍົກເລີກຕັ້ງແຕ່ v5.18.
"qr/foo/x" ໃນປັດຈຸບັນ ບໍ່ສົນໃຈ ທັງຫມົດ Unicode ຮູບແບບ ສີຂາວ ຊ່ອງ
ຕົວແກ້ໄຂການສະແດງອອກປົກກະຕິ "/x" ອະນຸຍາດໃຫ້ຮູບແບບມີພື້ນທີ່ສີຂາວແລະ
ຄໍາເຫັນ (ທັງສອງອັນນີ້ຖືກລະເລີຍ) ສໍາລັບການປັບປຸງການອ່ານ. ຈົນກ່ວາໃນປັດຈຸບັນ, ບໍ່ແມ່ນທັງຫມົດ
ຕົວອັກສອນພື້ນທີ່ສີຂາວທີ່ Unicode ກໍານົດສໍາລັບຈຸດປະສົງນີ້ໄດ້ຖືກຈັດການ. ໄດ້
ເພີ່ມເຕີມທີ່ຮັບຮູ້ໃນປັດຈຸບັນແມ່ນ:
U+0085 ແຖວຕໍ່ໄປ
U+200E ເຄື່ອງຫມາຍຊ້າຍຫາຂວາ
U+200F ເຄື່ອງໝາຍຂວາຫາຊ້າຍ
ຕົວແຍກເສັ້ນ U+2028
U+2029 PARAGRAPH SEPARATOR
ການນໍາໃຊ້ຕົວອັກສອນເຫຼົ່ານີ້ກັບ "/x" ນອກລະດັບອັກສອນວົງເລັບແລະໃນເວລາທີ່ບໍ່ມີ
ກ່ອນໜ້າດ້ວຍ backslash ໄດ້ຍົກຄຳເຕືອນການຍົກເລີກການສະໜັບສະໜຸນຕັ້ງແຕ່ v5.18. ໃນປັດຈຸບັນພວກເຂົາເຈົ້າຈະເປັນ
ບໍ່ສົນໃຈ.
ຄໍາຄິດຄໍາເຫັນ ສາຍ ພາຍໃນ "(?[ ])" ມີ ໃນປັດຈຸບັນ ສິ້ນສຸດລົງ ພຽງແຕ່ by a "\n"
"(?[ ])" ເປັນຄຸນສົມບັດທົດລອງ, ແນະນຳໃນ v5.18. ມັນດໍາເນີນການຄືກັບວ່າ "/x" ແມ່ນ
ເປີດໃຊ້ງານສະເໝີ. ແຕ່ມີຄວາມແຕກຕ່າງກັນ: ເສັ້ນສະແດງຄວາມຄິດເຫັນ (ປະຕິບັດຕາມຕົວອັກສອນ "#")
ຖືກຍົກເລີກໂດຍອັນໃດນຶ່ງທີ່ກົງກັບ "\R" ເຊິ່ງລວມມີຊ່ອງຫວ່າງທາງຕັ້ງທັງໝົດ, ເຊັ່ນ:
ຟີດແບບຟອມ. ເພື່ອຄວາມສອດຄ່ອງ, ຕອນນີ້ມີການປ່ຽນແປງເພື່ອໃຫ້ກົງກັບສິ່ງທີ່ຢຸດຕິການແຖວຄຳເຫັນ
ນອກ "(?[ ]) ", ຄື "\n" (ເຖິງແມ່ນວ່າຈະຫນີ), ເຊິ່ງຄືກັນກັບສິ່ງທີ່ຢຸດການ
ສະຕຣິງ heredoc ແລະຮູບແບບ.
"(?[...])" ຜູ້ປະກອບການ ໃນປັດຈຸບັນ ປະຕິບັດຕາມ ມາດຕະຖານ Perl ກ່ອນ ໜ້າ
ຄຸນສົມບັດການທົດລອງນີ້ອະນຸຍາດໃຫ້ກໍານົດການດໍາເນີນການໃນຮູບແບບການສະແດງອອກປົກກະຕິ. ກ່ອນທີ່ຈະ
ອັນນີ້, ໂຕປະຕິບັດການທາງຕັດມີລຳດັບອັນດຽວກັນກັບຕົວປະຕິບັດການຄູ່ອື່ນໆ.
ດຽວນີ້ມັນມີຄວາມສຳຄັນກວ່າ. ນີ້ສາມາດນໍາໄປສູ່ຜົນໄດ້ຮັບທີ່ແຕກຕ່າງກັນກ່ວາລະຫັດທີ່ມີຢູ່
ຄາດຫວັງ (ເຖິງແມ່ນວ່າເອກະສານໄດ້ສັງເກດເຫັນສະເຫມີວ່າການປ່ຽນແປງນີ້ອາດຈະເກີດຂື້ນ,
ແນະນໍາໃຫ້ວົງເລັບສໍານວນຢ່າງເຕັມທີ່). ເບິ່ງ "ຕົວລະຄອນວົງເລັບຂະຫຍາຍ
ຫ້ອງຮຽນ" ໃນ perlrecharclass.
ການລະເວັ້ນ "%" ແລະ "@" on hash ແລະ array ຊື່ is no ຕໍ່ໄປອີກແລ້ວ ອະນຸຍາດ
Perl ເກົ່າແກ່ແທ້ໆໃຫ້ທ່ານຍົກເວັ້ນ "@" ໃນຊື່ array ແລະ "%" ໃນຊື່ hash ໃນບາງ.
ຈຸດ. ນີ້ໄດ້ອອກຄໍາເຕືອນການຫຼຸດການສະຫມັກນັບຕັ້ງແຕ່ Perl 5.000, ແລະບໍ່ມີຕໍ່ໄປອີກແລ້ວ
ອະນຸຍາດ.
"$!" ຂໍ້ຄວາມ is ໃນປັດຈຸບັນ in ພາສາອັງກິດ ນອກ ໄດ້ ຂອບເຂດ of "ໃຊ້ ທ້ອງຖິ່ນ"
ກ່ອນຫນ້ານີ້, ຂໍ້ຄວາມ, ບໍ່ເຫມືອນກັບເກືອບທຸກຢ່າງອື່ນ, ສະເຫມີອອກມາໂດຍອີງໃສ່ປະຈຸບັນ
ທ້ອງຖິ່ນພື້ນຖານຂອງໂຄງການ. (ຍັງໄດ້ຮັບຜົນກະທົບໃນບາງລະບົບແມ່ນ "$^E".) ສໍາລັບໂຄງການ
ທີ່ບໍ່ໄດ້ກະກຽມເພື່ອຈັດການກັບຄວາມແຕກຕ່າງຂອງທ້ອງຖິ່ນ, ນີ້ສາມາດເຮັດໃຫ້ຂໍ້ຄວາມຂີ້ເຫຍື້ອ
ສະແດງ. ມັນດີກວ່າທີ່ຈະສະແດງຂໍ້ຄວາມທີ່ສາມາດແປໄດ້ໂດຍຜ່ານເຄື່ອງມືບາງຢ່າງກ່ວາຂີ້ເຫຍື້ອ
ຂໍ້ຄວາມທີ່ຍາກກວ່າທີ່ຈະຄິດອອກ.
"$!" ຂໍ້ຄວາມ ຈະ be ກັບຄືນມາ in UTF-8 ໃນເວລາທີ່ ເຫມາະສົມ
stringification ຂອງ $! ແລະ $^E ຈະມີການຕັ້ງທຸງ UTF-8 ເມື່ອຂໍ້ຄວາມແມ່ນຕົວຈິງ
ບໍ່ແມ່ນ ASCII UTF-8. ອັນນີ້ຈະເຮັດໃຫ້ບັນດາໂຄງການທີ່ຕັ້ງຂຶ້ນເປັນທ້ອງຖິ່ນຮູ້ຢ່າງຖືກຕ້ອງ
ສົ່ງອອກຂໍ້ຄວາມໃນພາສາກໍາເນີດຂອງຜູ້ໃຊ້. ລະຫັດທີ່ຕ້ອງການສືບຕໍ່ 5.20 ແລະ
ພຶດຕິກໍາກ່ອນຫນ້າສາມາດເຮັດ stringification ພາຍໃນຂອບເຂດຂອງທັງສອງ "ໃຊ້ bytes" ແລະ
"ໃຊ້ທ້ອງຖິ່ນ ": ຂໍ້ຄວາມ"". ພາຍໃນສອງຂອບເຂດນີ້, ບໍ່ມີການດໍາເນີນງານ Perl ອື່ນ
ໄດ້ຮັບຜົນກະທົບຈາກທ້ອງຖິ່ນ; $ ເທົ່ານັ້ນ! ແລະ $^E stringification. The "bytes" pragma ເຮັດໃຫ້ເກີດ UTF-8
ທຸງທີ່ຈະບໍ່ຖືກຕັ້ງ, ຄືກັນກັບໃນການປ່ອຍ Perl ທີ່ຜ່ານມາ. ນີ້ແກ້ໄຂ [perl #112208]
.
ສະຫນັບສະຫນູນ ສໍາລັບການ "?ແບບ?" ໂດຍບໍ່ມີການ ຢ່າງຊັດເຈນ ປະຕິບັດການ ມີ ໄດ້ ລົບອອກ
"m?Pattern?" ການກໍ່ສ້າງ, ເຊິ່ງອະນຸຍາດໃຫ້ຈັບຄູ່ regex ພຽງແຕ່ຄັ້ງດຽວ, ກ່ອນຫນ້ານີ້ມີ
ແບບຟອມທາງເລືອກທີ່ໄດ້ຮັບການລາຍລັກອັກສອນໂດຍກົງກັບເຄື່ອງຫມາຍການຕົວຂັ້ນຄໍາຖາມ, ຍົກເວັ້ນ
ຕົວປະຕິບັດການ "m" ຢ່າງຊັດເຈນ. ການນໍາໃຊ້ນີ້ໄດ້ເຮັດໃຫ້ເກີດການເຕືອນໄພຫຼຸດຜ່ອນການນັບຕັ້ງແຕ່ 5.14.0. ມັນແມ່ນ
ໃນປັດຈຸບັນມີຂໍ້ຜິດພາດຂອງໄວຍະກອນ, ດັ່ງນັ້ນເຄື່ອງຫມາຍຄໍາຖາມສາມາດສາມາດໃຊ້ໄດ້ໃນຕົວປະຕິບັດການໃຫມ່.
"ກໍານົດ(@array)" ແລະ "ກໍານົດ(%hash)" ມີ ໃນປັດຈຸບັນ ຄວາມຕາຍ ຄວາມຜິດພາດ
ສິ່ງເຫຼົ່ານີ້ໄດ້ຖືກຍົກເລີກການສະໜັບສະໜຸນຕັ້ງແຕ່ v5.6.1 ແລະໄດ້ເພີ່ມຄຳເຕືອນການຍົກເລີກການສະໜັບສະໜຸນຕັ້ງແຕ່ v5.16.
ການນໍາໃຊ້ a hash or an array as a ອ້າງອິງ ມີ ໃນປັດຈຸບັນ ຄວາມຕາຍ ຄວາມຜິດພາດ
ຕົວຢ່າງ, "%foo->{"bar"}" ຕອນນີ້ເຮັດໃຫ້ການລວບລວມຂໍ້ມູນຜິດພາດ. ເຫຼົ່ານີ້ແມ່ນໄດ້
ເຊົາສະໜັບສະໜຸນຕັ້ງແຕ່ກ່ອນ v5.8, ແລະໄດ້ເພີ່ມຄຳເຕືອນການຍົກເລີກການສະໜັບສະໜຸນຕັ້ງແຕ່ນັ້ນມາ.
ການປ່ຽນແປງ to ໄດ້ "*" prototype
ຕົວອັກສອນ "*" ຢູ່ໃນຕົວແບບຂອງການເຮັດວຽກຍ່ອຍຍ່ອຍທີ່ໃຊ້ເພື່ອໃຫ້ຄຳສັບເປົ່າມີສ່ວນລຳດັບ.
ຫຼາຍກວ່າໝູ່, ແຕ່ບໍ່ແມ່ນທັງໝົດ, ຊື່ປະຈຳຍ່ອຍ. ມັນບໍ່ເຄີຍສອດຄ່ອງແລະສະແດງ buggy
ພຶດຕິ ກຳ.
ໃນປັດຈຸບັນມັນໄດ້ຖືກປ່ຽນແປງ, ດັ່ງນັ້ນ subroutines ສະເຫມີເອົາຄວາມສໍາຄັນໃນໄລຍະ barewords, ເຊິ່ງ
ເອົາມາໃຫ້ມັນສອດຄ່ອງກັບຫນ້າທີ່ສ້າງໃນຕົວແບບທີ່ຄ້າຍຄືກັນ:
subsplat(*) { ... }
ຍ່ອຍ foo { ... }
splat(foo); # ໃນປັດຈຸບັນສະເຫມີ splat(foo())
splat(ແຖບ); # ຍັງ splat('bar') ຄືເກົ່າ
close(foo); # ປິດ(foo())
ປິດ(bar); # ປິດ('bar')
ປະຕິເສດ
ການຕັ້ງຄ່າ "${^ENCODING}" to ຫຍັງ ແຕ່ "undef"
ຕົວແປນີ້ອະນຸຍາດໃຫ້ຂຽນສະຄຣິບ Perl ໃນການເຂົ້າລະຫັດອື່ນທີ່ບໍ່ແມ່ນ ASCII ຫຼື UTF-8.
ຢ່າງໃດກໍ່ຕາມ, ມັນມີຜົນກະທົບຕໍ່ທຸກໂມດູນທົ່ວໂລກ, ນໍາໄປສູ່ຄໍາຕອບທີ່ຜິດພາດແລະການແບ່ງສ່ວນ
ຄວາມຜິດ. ສະຄຣິບໃໝ່ຄວນຂຽນໃນ UTF-8; ສະຄຣິບເກົ່າຄວນຖືກປ່ຽນເປັນ UTF-8,
ເຊິ່ງເຮັດໄດ້ຢ່າງງ່າຍດາຍກັບຜົນປະໂຫຍດ piconv.
ການນໍາໃຊ້ of ບໍ່ແມ່ນກາຟິກ ລັກສະນະ in ລັກສະນະດຽວ ຕົວແປ ຊື່
syntax ສໍາລັບຊື່ຕົວແປທີ່ມີລັກສະນະດຽວແມ່ນມີຄວາມອ່ອນໄຫວຫຼາຍກ່ວາຕົວແປທີ່ຍາວກວ່າ
ຊື່, ອະນຸຍາດໃຫ້ຊື່ຕົວອັກສອນຕົວຫນຶ່ງເປັນຕົວອັກສອນຫຍໍ້ຫນ້າຫຼືແມ້ກະທັ້ງເບິ່ງບໍ່ເຫັນ (a
ບໍ່ແມ່ນຮູບພາບ). Perl v5.20 ໄດ້ປະຕິເສດການຄວບຄຸມໄລຍະ ASCII ເປັນຊື່ດັ່ງກ່າວ. ໃນປັດຈຸບັນ, ທັງຫມົດ
ຕົວອັກສອນທີ່ບໍ່ແມ່ນກຣາຟິກທີ່ເຄີຍໄດ້ຮັບອະນຸຍາດແມ່ນຖືກຄັດຄ້ານ. ຜົນກະທົບພາກປະຕິບັດຂອງ
ນີ້ເກີດຂື້ນພຽງແຕ່ເມື່ອບໍ່ຢູ່ພາຍໃຕ້ "ໃຊ້ utf8", ແລະມີຜົນກະທົບພຽງແຕ່ການຄວບຄຸມ C1 (ຈຸດລະຫັດ
0x80 ຫາ 0xFF), ພື້ນທີ່ບໍ່ແຕກ, ແລະ Soft HyPHEN.
ອິນລິນ of "ຍ່ອຍ () { $var }" ກັບ ສັງເກດໄດ້ ຜົນຂ້າງຄຽງ
ໃນຫຼາຍໆກໍລະນີ Perl ເຮັດໃຫ້ "sub () { $var }" ເຂົ້າໄປໃນ subroutine ຄົງທີ່ inlinable,
ການຈັບຄ່າຂອງ $var ໃນເວລາການສະແດງອອກ "sub" ຖືກປະເມີນ. ນີ້ສາມາດແຕກ
ພຶດຕິກໍາການປິດໃນກໍລະນີທີ່ $var ໄດ້ຖືກດັດແກ້ຕໍ່ມາ, ນັບຕັ້ງແຕ່
subroutine ຈະບໍ່ສົ່ງຄືນຄ່າທີ່ປ່ຽນແປງ. (ໃຫ້ສັງເກດວ່າທັງໝົດນີ້ໃຊ້ໄດ້ກັບຜູ້ບໍ່ເປີດເຜີຍຊື່ເທົ່ານັ້ນ
subroutines ກັບ prototype ຫວ່າງເປົ່າ ("sub ()").)
ການນໍາໃຊ້ນີ້ແມ່ນໃນປັດຈຸບັນບໍ່ໄດ້ສະຫມັກໃນກໍລະນີເຫຼົ່ານັ້ນທີ່ຕົວປ່ຽນແປງສາມາດໄດ້ຮັບການແກ້ໄຂ
ຢູ່ບ່ອນອື່ນ. Perl ກວດພົບກໍລະນີເຫຼົ່ານັ້ນ ແລະສົ່ງສັນຍານເຕືອນການຍົກເລີກການປະຕິເສດ. ລະຫັດດັ່ງກ່າວຈະ
ອາດຈະມີການປ່ຽນແປງໃນອະນາຄົດແລະຢຸດການຜະລິດຄົງທີ່.
ຖ້າຕົວແປຂອງເຈົ້າຖືກດັດແປງພຽງແຕ່ຢູ່ໃນສະຖານທີ່ທີ່ມັນຖືກປະກາດ, ຫຼັງຈາກນັ້ນ Perl ຈະ
ສືບຕໍ່ເຮັດໃຫ້ sub inlinable ໂດຍບໍ່ມີການເຕືອນ.
sub make_constant {
$var ຂອງຂ້ອຍ = shift;
return sub () { $var }; # ດີ
}
sub make_constant_deprecated {
$var ຂອງຂ້ອຍ;
$var = shift;
return sub () { $var }; # ເຊົາໃຊ້ແລ້ວ
}
sub make_constant_deprecated2 {
$var ຂອງຂ້ອຍ = shift;
log_that_value($var); # ສາມາດແກ້ໄຂ $var
return sub () { $var }; # ເຊົາໃຊ້ແລ້ວ
}
ໃນຕົວຢ່າງທີສອງຂ້າງເທິງ, ການກວດພົບວ່າ $var ຖືກມອບໃຫ້ພຽງແຕ່ຄັ້ງດຽວແມ່ນຍາກເກີນໄປທີ່ຈະ
ກວດພົບ. ວ່າມັນເກີດຂຶ້ນຢູ່ໃນຈຸດອື່ນນອກເຫນືອຈາກການປະກາດ "ຂອງຂ້ອຍ" ແມ່ນພຽງພໍສໍາລັບ Perl
ພົບວ່າມັນສົງໃສ.
ການເຕືອນການປະຕິເສດການປະຕິເສດນີ້ເກີດຂຶ້ນພຽງແຕ່ສໍາລັບຕົວແປທີ່ງ່າຍດາຍສໍາລັບເນື້ອໃນຂອງຍ່ອຍ. (ກ
"BEGIN" block ຫຼື "ໃຊ້" ຄໍາຖະແຫຼງພາຍໃນຍ່ອຍແມ່ນຖືກລະເລີຍ, ເພາະວ່າມັນບໍ່ກາຍເປັນ
ສ່ວນຫນຶ່ງຂອງຮ່າງກາຍຍ່ອຍ.) ສໍາລັບກໍລະນີທີ່ສັບສົນຫຼາຍ, ເຊັ່ນ:
"sub () { do_something() ຖ້າ 0; $var }" ພຶດຕິກໍາໄດ້ປ່ຽນແປງເຊັ່ນວ່າ inlining ເຮັດ.
ບໍ່ເກີດຂຶ້ນຖ້າຕົວແປສາມາດດັດແປງໄດ້ຢູ່ບ່ອນອື່ນ. ກໍລະນີດັ່ງກ່າວຄວນຈະຫາຍາກ.
ການນໍາໃຊ້ of ຫຼາຍ "/x" regexp ຕົວປ່ຽນແປງ
ຕອນນີ້ມັນຖືກປະຕິເສດທີ່ຈະເວົ້າບາງສິ່ງບາງຢ່າງເຊັ່ນ: ຕໍ່ໄປນີ້:
qr/foo/xx;
/(?xax:foo)/;
ໃຊ້ re qw(/amxx);
ນັ້ນແມ່ນ, ດຽວນີ້ "x" ຄວນຈະເກີດຂື້ນພຽງແຕ່ຄັ້ງດຽວໃນສາຍຂອງການສະແດງຜົນປົກກະຕິທີ່ຕິດກັນ
ຕົວປ່ຽນຮູບແບບ. ພວກເຮົາບໍ່ເຊື່ອວ່າມີເຫດການນີ້ເກີດຂຶ້ນໃນ CPAN ທັງໝົດ.
ນີ້ແມ່ນຢູ່ໃນການກະກຽມສໍາລັບການປ່ອຍ Perl ໃນອະນາຄົດທີ່ມີ "/xx" ອະນຸຍາດໃຫ້ພື້ນທີ່ສີຂາວສໍາລັບ
ຄວາມສາມາດໃນການອ່ານໃນຫ້ອງຮຽນຕົວອັກສອນໃນວົງເລັບ (ທີ່ປິດຢູ່ໃນວົງເລັບສີ່ຫຼ່ຽມ: "[...]").
ການນໍາໃຊ້ a NO-BREAK ຊ່ອງ in a ລັກສະນະ alias ສໍາລັບການ "\N{...}" is ໃນປັດຈຸບັນ ບໍ່ເຫັນແກ່ຕົວ
ລັກສະນະທີ່ບໍ່ແມ່ນກາຟິກນີ້ເປັນສິ່ງຈໍາເປັນທີ່ບໍ່ສາມາດແຍກອອກຈາກພື້ນທີ່ປົກກະຕິ, ແລະອື່ນໆ
ບໍ່ຄວນອະນຸຍາດໃຫ້. ເບິ່ງ "ນາມແຝງແບບກຳນົດເອງ" ໃນນາມສະກຸນ.
A literal "{" ຄວນ ໃນປັດຈຸບັນ be ເອົາຕົວຫຼົບ ໜີ in a ຮູບແບບ
ຖ້າທ່ານຕ້ອງການວົງເລັບ curly ຊ້າຍທີ່ຮູ້ຫນັງສື (ຍັງເອີ້ນວ່າວົງເລັບຊ້າຍ) ເປັນປົກກະຕິ
ຮູບແບບການສະແດງອອກ, ດຽວນີ້ເຈົ້າຄວນໜີມັນໂດຍການນຳໜ້າດ້ວຍ backslash
("\{") ຫຼືປິດມັນຢູ່ໃນວົງເລັບສີ່ຫຼ່ຽມ "[{]", ຫຼືໂດຍໃຊ້ "\Q"; ຖ້າບໍ່ດັ່ງນັ້ນ a
ການເຕືອນໄພຍົກເລີກການສະແດງອອກຈະໄດ້ຮັບການຍົກສູງຂຶ້ນ. ອັນນີ້ໄດ້ຖືກປະກາດເປັນຄັ້ງທຳອິດທີ່ກຳລັງຈະອອກມາໃນ v5.16
ປ່ອຍ; ມັນຈະຊ່ວຍໃຫ້ການຂະຫຍາຍພາສາໃນອະນາຄົດເກີດຂຶ້ນ.
ການເຮັດໃຫ້ ທັງຫມົດ ຄໍາເຕືອນ ຄວາມຕາຍ is ທໍ້ຖອຍໃຈ
ເອກະສານສໍາລັບການເຕືອນໄພອັນຕະລາຍໃຫ້ສັງເກດວ່າ "ໃຊ້ຄໍາເຕືອນ FATAL => 'ທັງຫມົດ'" ແມ່ນ
ທໍ້ຖອຍໃຈ, ແລະໃຫ້ພາສາທີ່ເຂັ້ມແຂງກ່ຽວກັບຄວາມສ່ຽງຂອງການເຕືອນໄພອັນຕະລາຍໂດຍທົ່ວໄປ.
ການປະຕິບັດ ການຍົກລະດັບ
· ຖ້າວິທີການ ຫຼືຊື່ຊັ້ນຮຽນຖືກຮູ້ຈັກໃນເວລາລວບລວມ, hash ແມ່ນ precomputed ເພື່ອເພີ່ມຄວາມໄວ
ການຊອກຫາວິທີການແລ່ນເວລາ. ນອກຈາກນີ້, ຊື່ວິທີການປະສົມເຊັ່ນ "SUPER::new" ແມ່ນໄດ້ຖືກວິເຄາະຢູ່
ລວບລວມເວລາ, ເພື່ອບັນທຶກການແຍກພວກມັນໃນເວລາແລ່ນ.
· array ແລະ hash lookups (ໂດຍສະເພາະແມ່ນການຮັງ) ທີ່ໃຊ້ພຽງແຕ່ຄົງທີ່ຫຼືງ່າຍດາຍ
ຕົວແປເປັນກະແຈ, ໃນປັດຈຸບັນແມ່ນໄວຂຶ້ນຢ່າງຫຼວງຫຼາຍ. ເບິ່ງ "ການປ່ຽນແປງພາຍໃນ" ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ
ລາຍລະອຽດ.
· ຕອນນີ້ "(...)x1", "("ຄົງທີ່")x0" ແລະ "($scalar)x0" ຖືກປັບປຸງໃຫ້ເໝາະສົມໃນບັນຊີລາຍການ. ຖ້າ
ການໂຕ້ຖຽງຂວາມືແມ່ນຄົງທີ່ 1, ຕົວປະຕິບັດການຄ້າງຄືນຫາຍໄປ. ຖ້າ
argument ຂວາມືແມ່ນຄົງທີ່ 0, ການສະແດງອອກທັງຫມົດແມ່ນ optimized ຫວ່າງເປົ່າ
ບັນຊີລາຍຊື່, ດັ່ງນັ້ນຕາບໃດທີ່ການໂຕ້ຖຽງມືຊ້າຍເປັນ scalar ງ່າຍດາຍຫຼືຄົງທີ່. (ນັ້ນແມ່ນ,
"(foo())x0" ບໍ່ແມ່ນຂຶ້ນກັບການເພີ່ມປະສິດທິພາບນີ້.)
· ການມອບໝາຍ "substr" ດຽວນີ້ຖືກປັບປຸງໃຫ້ເປັນ 4-argument "substr" ໃນຕອນທ້າຍຂອງ
subroutine (ຫຼືເປັນການໂຕ້ຖຽງກັບ "ກັບຄືນ"). ກ່ອນຫນ້ານີ້, ການເພີ່ມປະສິດທິພາບນີ້ເທົ່ານັ້ນ
ເກີດຂຶ້ນໃນບໍລິບົດທີ່ບໍ່ມີປະໂຫຍດ.
· ໃນ "\L...", "\Q...", ແລະອື່ນໆ, ເພີ່ມເຕີມ "stringify" op ໄດ້ຖືກປັບປຸງໃຫ້ເໝາະສົມແລ້ວ, ເຮັດໃຫ້
ເຫຼົ່ານີ້ໄວເທົ່າກັບ "lcfirst", "quotemeta", ແລະອື່ນໆ.
· ການມອບໝາຍໃຫ້ບັນຊີລາຍຊື່ຫວ່າງເປົ່າແມ່ນບາງຄັ້ງໄວຂຶ້ນ. ໂດຍສະເພາະ, ມັນບໍ່ເຄີຍໂທຫາ
"FETCH" ກ່ຽວກັບການໂຕ້ຖຽງທີ່ຜູກມັດຢູ່ເບື້ອງຂວາມື, ໃນຂະນະທີ່ມັນເຄີຍເປັນບາງຄັ້ງ.
· ມີການປັບປຸງການປະຕິບັດສູງເຖິງ 20% ເມື່ອ "ຄວາມຍາວ" ຖືກນໍາໃຊ້ກັບການທີ່ບໍ່ແມ່ນ.
magical, string non-tied, ແລະ "use bytes" ຢູ່ໃນຂອບເຂດຫຼື string ບໍ່ໄດ້ໃຊ້.
UTF-8 ພາຍໃນ.
·ໃນ perl ສ່ວນໃຫຍ່ກໍ່ສ້າງດ້ວຍຈໍານວນ 64-bit, ການນໍາໃຊ້ຫນ່ວຍຄວາມຈໍາສໍາລັບການທີ່ບໍ່ແມ່ນ magical, ບໍ່ຜູກມັດ.
ເກັດທີ່ມີພຽງແຕ່ຄ່າຈຸດລອຍໄດ້ຖືກຫຼຸດລົງລະຫວ່າງ 8 ຫາ 32
bytes, ຂຶ້ນກັບ OS.
·ໃນ "@array = split", ການມອບຫມາຍສາມາດໄດ້ຮັບການ optimized ທັນທີ, ດັ່ງນັ້ນ "split" ຂຽນ.
ໂດຍກົງກັບ array. ການເພີ່ມປະສິດທິພາບນີ້ເກີດຂຶ້ນກັບແພັກເກັດອາເຣອື່ນເທົ່ານັ້ນ
ກ່ວາ @_, ແລະບາງຄັ້ງເທົ່ານັ້ນ. ໃນປັດຈຸບັນການເພີ່ມປະສິດທິພາບນີ້ເກີດຂຶ້ນເກືອບຕະຫຼອດເວລາ.
· "ເຂົ້າຮ່ວມ" ໃນປັດຈຸບັນແມ່ນຂຶ້ນກັບການພັບຄົງທີ່. ດັ່ງນັ້ນຕົວຢ່າງ "ເຂົ້າຮ່ວມ "-", "a", "b" ແມ່ນ
ປ່ຽນເວລາລວບລວມເປັນ "ab". ຍິ່ງໄປກວ່ານັ້ນ, "ເຂົ້າຮ່ວມ" ກັບ scalar ຫຼືຄົງທີ່ສໍາລັບ
ຕົວແຍກແລະບັນຊີລາຍການລາຍການດຽວທີ່ຈະເຂົ້າຮ່ວມແມ່ນງ່າຍທີ່ຈະເປັນ stringification, ແລະ
ຕົວແຍກບໍ່ໄດ້ຮັບການປະເມີນຜົນ.
· "qq(@array)" ຖືກປະຕິບັດໂດຍໃຊ້ສອງ ops: stringify op ແລະ join op. ຖ້າ "qq"
ບໍ່ມີອັນໃດນອກເໜືອໄປຈາກອາເຣອັນດຽວ, ການປັບຕົວໃຫ້ເໝາະສົມທີ່ສຸດ.
· "$var ຂອງພວກເຮົາ" ແລະ "our($s,@a,%h)" ຢູ່ໃນບໍລິບົດທີ່ບໍ່ຖືກປະເມີນແລ້ວໃນເວລາແລ່ນ.
ເຖິງແມ່ນວ່າເປັນລໍາດັບທັງຫມົດຂອງ "$foo ຂອງພວກເຮົາ;" ຄໍາຖະແຫຼງທີ່ພຽງແຕ່ຈະຖືກຂ້າມໄປ. ຄືກັນ
ໃຊ້ກັບຕົວແປ "ລັດ".
·ຫຼາຍຫນ້າທີ່ພາຍໃນໄດ້ຮັບການປັບປຸງປັບປຸງປະສິດທິພາບແລະຫຼຸດຜ່ອນການຂອງເຂົາເຈົ້າ
ຮອຍຄວາມຊົງຈໍາ. [perl #121436]
[perl #121906] [perl #121906]
· ການທົດສອບໄຟລ໌ "-T" ແລະ "-B" ຈະກັບຄືນມາໄວກວ່າເມື່ອກວດພົບໄຟລ໌ຫວ່າງເປົ່າ. [perl
#121489]
· Hash lookups ທີ່ key ແມ່ນຄົງທີ່ໄວຂຶ້ນ.
· Subroutines ທີ່ມີຕົ້ນແບບຫວ່າງເປົ່າແລະຮ່າງກາຍທີ່ມີພຽງແຕ່ "undef" ແມ່ນໃນປັດຈຸບັນ
ມີສິດໄດ້ຮັບ inlining. [perl #122728]
· Subroutines ໃນແພັກເກດບໍ່ຈໍາເປັນຕ້ອງຖືກເກັບໄວ້ໃນ typeglobs: ປະກາດ a
ດຽວນີ້ subroutine ຈະເອົາການອ້າງອີງຍ່ອຍງ່າຍໆໂດຍກົງໃສ່ໃນ stash ຖ້າເປັນໄປໄດ້,
ຊ່ວຍປະຢັດຄວາມຊົງຈໍາ. typeglob ຍັງມີຢູ່ໃນ notionally, ສະນັ້ນການເຂົ້າເຖິງມັນຈະເຮັດໃຫ້ເກີດການ
stash entry ເພື່ອໄດ້ຮັບການຍົກລະດັບເປັນ typeglob (ie ນີ້ແມ່ນພຽງແຕ່ການຈັດຕັ້ງປະຕິບັດພາຍໃນ
ລາຍລະອຽດ). ການເພີ່ມປະສິດທິພາບນີ້ບໍ່ໄດ້ນໍາໃຊ້ກັບ XSUBs ຫຼືການສົ່ງອອກກິດຍ່ອຍທີ່ສົ່ງອອກ,
ແລະການໂທຫາວິທີການຈະຍົກເລີກມັນ, ເພາະວ່າພວກມັນ cache ສິ່ງທີ່ຢູ່ໃນ typeglobs. [perl #120441]
· ຟັງຊັນ "utf8::native_to_unicode()" ແລະ "utf8::unicode_to_native()" (ເບິ່ງ utf8)
ໃນປັດຈຸບັນໄດ້ຖືກປັບປຸງໃຫ້ດີທີ່ສຸດໃນເວທີ ASCII. ໃນປັດຈຸບັນບໍ່ມີເຖິງແມ່ນວ່າການປະຕິບັດຫນ້ອຍ
ຕີໃນການຂຽນລະຫັດແບບເຄື່ອນທີ່ລະຫວ່າງເວທີ ASCII ແລະ EBCDIC.
· Win32 Perl ໃຊ້ 8 KB ຂອງຫນ່ວຍຄວາມຈໍາຕໍ່ຂະບວນການຫນ້ອຍກວ່າກ່ອນສໍາລັບທຸກໆຂະບວນການ perl,
ເນື່ອງຈາກວ່າບາງຂໍ້ມູນໃນປັດຈຸບັນແມ່ນຫນ່ວຍຄວາມຈໍາແຜນທີ່ຈາກແຜ່ນແລະແບ່ງປັນລະຫວ່າງຂະບວນການຈາກ
perl binary ດຽວກັນ.
ໂມດູນ ແລະ ປາກເວົ້າ
ການປັບປຸງ ໂມດູນ ແລະ ປາກເວົ້າ
ຫຼາຍໆຫ້ອງສະຫມຸດທີ່ແຈກຢາຍກັບ perl ໄດ້ຖືກປັບປຸງຕັ້ງແຕ່ v5.20.0. ສໍາລັບ
ບັນຊີລາຍຊື່ຄົບຖ້ວນຂອງການປ່ຽນແປງ, ດໍາເນີນການ:
ລາຍຊື່ຫຼັກ --diff 5.20.0 5.22.0
ທ່ານສາມາດທົດແທນສະບັບ favorite ຂອງທ່ານແທນທີ່ຈະເປັນ 5.20.0, ເຊັ່ນດຽວກັນ.
ການປ່ຽນແປງທີ່ໂດດເດັ່ນບາງອັນລວມມີ:
· ຮວບຮວມ::Tar ຖືກອັບເກຣດເປັນເວີຊັ່ນ 2.04.
ການທົດສອບສາມາດດໍາເນີນການຂະຫນານໄດ້.
· ຄຸນລັກສະນະໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 0.27.
ການນໍາໃຊ້ "memEQs" ໃນ XS ໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl #122701]
ຫຼີກເວັ້ນການອ່ານເກີນຈຸດສິ້ນສຸດຂອງ buffer. [perl #122629]
· B ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 1.58.
ມັນສະຫນອງຟັງຊັນ "B::safename", ອີງໃສ່ "B::GV->SAFENAME", ທີ່ມີຢູ່ແລ້ວ.
ທີ່ປ່ຽນ "\cOPEN" ເປັນ "^OPEN".
COPs Nulled ໃນປັດຈຸບັນແມ່ນເປັນປະເພດ "B::COP", ແທນທີ່ຈະເປັນ "B::OP".
ຕອນນີ້ວັດຖຸ "B::REGEXP" ໃຫ້ວິທີການ "qr_anoncv" ສໍາລັບການເຂົ້າເຖິງ CV ທີ່ບໍ່ຊັດເຈນ.
ກ່ຽວຂ້ອງກັບ "qr//" ສິ່ງທີ່ມີບລັອກລະຫັດ, ແລະວິທີການ "compflags".
ສົ່ງຄືນທຸງທີ່ກ່ຽວຂ້ອງທີ່ມາຈາກ "qr//blahblah" op.
"B::PMOP" ຕອນນີ້ໃຫ້ວິທີການ "pmregexp" ທີ່ສົ່ງຄືນວັດຖຸ "B::REGEXP". ສອງໃຫມ່
ຫ້ອງຮຽນ, "B::PADNAME" ແລະ "B::PADNAMELIST", ໄດ້ຖືກແນະນໍາ.
ແມງໄມ້ທີ່, ຫຼັງຈາກການສ້າງ ithread ຫຼື psuedofork, SVs ພິເສດ / ເປັນອະມະຕະໃນ
ເດັກ ithread/psuedoprocess ບໍ່ມີຫ້ອງຮຽນທີ່ຖືກຕ້ອງຂອງ "B::SPECIAL", ໄດ້ຖືກ.
ຄົງທີ່. ວິທີການ "id" ແລະ "outid" PADLIST ໄດ້ຖືກເພີ່ມ.
· B::Concise ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 0.996.
Null ops ທີ່ເປັນສ່ວນຫນຶ່ງຂອງລະບົບຕ່ອງໂສ້ການປະຕິບັດໃນປັດຈຸບັນແມ່ນໃຫ້ຕົວເລກລໍາດັບ.
ທຸງສ່ວນຕົວສໍາລັບ ops nulled ໃນປັດຈຸບັນໄດ້ຖືກ dumped ກັບ mnemonics ຍ້ອນວ່າມັນຈະເປັນສໍາລັບ
ຄູ່ຮ່ວມງານທີ່ບໍ່ແມ່ນ nulled.
· B::Deparse ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 1.35.
ດຽວນີ້ມັນແຍກ "+sub : attr { ... }" ຢ່າງຖືກຕ້ອງໃນຕອນເລີ່ມຕົ້ນຂອງຄຳຖະແຫຼງ. ໂດຍບໍ່ມີການ
ໃນເບື້ອງຕົ້ນ "+", "ຍ່ອຍ" ຈະເປັນປ້າຍຄໍາຖະແຫຼງ.
ຕັນ "BEGIN" ໃນປັດຈຸບັນຖືກປ່ອຍອອກມາໃນສະຖານທີ່ທີ່ເຫມາະສົມຕະຫຼອດເວລາ, ແຕ່ການປ່ຽນແປງ
ແຕ່ຫນ້າເສຍດາຍ, ໄດ້ນໍາສະເຫນີການຖົດຖອຍ, ໃນ "BEGIN" ຕັນທີ່ເກີດຂື້ນກ່ອນ
ທ້າຍຂອງຕັນປິດອາດຈະປາກົດຢູ່ລຸ່ມມັນແທນ.
"B::Deparse" ຈະບໍ່ເຮັດໃຫ້ "ທ້ອງຖິ່ນ" ທີ່ບໍ່ຖືກຕ້ອງຢູ່ທີ່ນີ້ແລະບ່ອນນັ້ນ, ເຊັ່ນ: "LIST =
tr/a//d". [perl #119815]
ຖະແຫຼງການ "ໃຊ້" ທີ່ຕິດກັນຈະບໍ່ຖືກຊ້ອນກັນໂດຍບັງເອີນຖ້າອັນໃດອັນໜຶ່ງມີ "ເຮັດ"
ຕັນ. [perl #115066]
arrays ວົງເລັບໃນລາຍຊື່ທີ່ສົ່ງໄປຫາ "\" ດຽວນີ້ຖືກແຍກອອກຢ່າງຖືກຕ້ອງກັບ
ວົງເລັບ (ຕົວຢ່າງ:, "\(@a, (@b), @c)" ຕອນນີ້ຮັກສາວົງເລັບຮອບ @b), ດັ່ງນັ້ນ.
ຮັກສາພຶດຕິກຳການແປຂອງອາເຣທີ່ອ້າງອີງໃສ່ວົງເລັບ. ໃນເມື່ອກ່ອນ, ມັນ
ໃຊ້ໄດ້ພຽງແຕ່ໜຶ່ງອາເຣ: "\(@a)".
ດຽວນີ້ "ທ້ອງຖິ່ນຂອງພວກເຮົາ" ຖືກແຍກອອກຢ່າງຖືກຕ້ອງ, ໂດຍມີ "ຂອງພວກເຮົາ" ລວມຢູ່.
"for($foo; !$bar; $baz) {...}" ຖືກແຍກອອກໄປໂດຍບໍ່ມີ "!" (ຫຼືບໍ່"). ນີ້ໄດ້
ຄົງທີ່.
ຄໍາຫລັກຫຼັກທີ່ຂັດແຍ້ງກັບ subroutines lexical ໄດ້ຖືກຍົກເລີກໃນປັດຈຸບັນກັບ
"ຫຼັກ::" ຄໍານໍາຫນ້າ.
"foreach state $x (...) {...}" ດຽວນີ້ໄດ້ແຍກອອກຢ່າງຖືກຕ້ອງກັບ "state" ແລະບໍ່ແມ່ນ "my".
"ຂອງພວກເຮົາ @array = split(...)" ໃນປັດຈຸບັນ deparses ຢ່າງຖືກຕ້ອງກັບ "ຂອງພວກເຮົາ" ໃນກໍລະນີທີ່
ການມອບໝາຍຖືກປັບປຸງໃຫ້ເໝາະສົມທັນທີ.
ດຽວນີ້ມັນ ໝົດ ໄປ "ຂອງພວກເຮົາ (ລາຍຊື່)" ແລະພິມ lexical ("My Dog $spot") ຢ່າງຖືກຕ້ອງ.
ຍົກເລີກ $#_ ແທນທີ່ $#{_}. [perl #123947]
BEGIN blocks ໃນຕອນທ້າຍຂອງຂອບເຂດການປິດລ້ອມໄດ້ຖືກແຍກອອກໃນສະຖານທີ່ທີ່ເຫມາະສົມ.
[perl #77452]
BEGIN blocks ບາງຄັ້ງຖືກຍົກເລີກເປັນ __ANON__, ແຕ່ປະຈຸບັນເອີ້ນວ່າ BEGIN ສະເໝີ.
ປະຈຸບັນນີ້ລະບົບຍ່ອຍຂອງ Lexical ໄດ້ຖືກຍົກເລີກຢ່າງສົມບູນ. [perl #116553]
"ອັນໃດກໍໄດ້ =~ y///r" ກັບ "/r" ຈະບໍ່ຍົກເວັ້ນຕົວປະຕິບັດການຊ້າຍ.
ຕົ້ນໄມ້ op ທີ່ປະກອບເປັນບລັອກລະຫັດ regexp ດຽວນີ້ໄດ້ຫາຍໄປແທ້ໆ. ໃນເມື່ອກ່ອນ, ໄດ້
ສະຕຣິງຕົ້ນສະບັບທີ່ປະກອບດ້ວຍການສະແດງອອກປົກກະຕິໄດ້ຖືກນໍາໃຊ້. ທີ່ເຮັດໃຫ້ເກີດບັນຫາ
ດ້ວຍ "qr/(?{<
[perl #123217] [perl #115256]
$; ໃນຕອນທ້າຍຂອງຄໍາຖະແຫຼງທີ່ຈະບໍ່ສູນເສຍເຄື່ອງຫມາຍຈຸດຂອງມັນ. [perl #123357]
ບາງກໍລະນີຂອງການປະກາດແບບຍ່ອຍທີ່ເກັບໄວ້ໃນ stash ໃນຮູບແບບ shorthand ກໍາລັງເປັນ
ຖືກລະເວັ້ນ.
ຕົວອັກສອນທີ່ບໍ່ແມ່ນ ASCII ໃນປັດຈຸບັນຖືກຫລົບຫນີຢ່າງຕໍ່ເນື່ອງໃນສະຕຣິງ, ແທນທີ່ຈະເປັນບາງຕົວ
ເວລາ. (ຍັງມີບັນຫາທີ່ຍັງຄ້າງຄາກັບການສະແດງອອກ ແລະຕົວລະບຸປົກກະຕິ
ທີ່ບໍ່ໄດ້ຮັບການແກ້ໄຂ.)
ເມື່ອການໂທຍ່ອຍຕົ້ນແບບຖືກຍົກເລີກດ້ວຍ "&" (ຕົວຢ່າງ:, ພາຍໃຕ້ການ -P ທາງເລືອກ), "scalar"
ດຽວນີ້ຖືກເພີ່ມເຂົ້າຕາມຄວາມເໝາະສົມ, ເພື່ອບັງຄັບໃຫ້ບໍລິບົດການສະເກັດເລກໝາຍເຖິງຕົວແບບ.
"require(foo())", "do(foo())", "goto(foo())" ແລະໂຄງສ້າງທີ່ຄ້າຍຄືກັນກັບການຄວບຄຸມ loop
ດຽວນີ້ຖືກຂັບໄລ່ຢ່າງຖືກຕ້ອງ. ວົງເລັບນອກບໍ່ແມ່ນທາງເລືອກ.
Whitespace ບໍ່ໄດ້ຖືກຫລົບຫນີໃນການສະແດງອອກປົກກະຕິ, ເພາະວ່າມັນໄດ້ຮັບ
ໜີໄປຢ່າງຜິດພາດພາຍໃນພາກສ່ວນ "(?x:...)"
"sub foo { foo() }" ຕອນນີ້ຖືກຍົກເລີກດ້ວຍວົງເລັບບັງຄັບເຫຼົ່ານັ້ນ.
"/@array/" ດຽວນີ້ຖືກແຍກອອກເປັນການສະແດງຜົນປົກກະຕິ, ແລະບໍ່ພຽງແຕ່ @array ເທົ່ານັ້ນ.
"/@{-}/", "/@{+}/" ແລະ $#{1} ດຽວນີ້ຖືກຖອນຕົວອອກດ້ວຍວົງເລັບ, ເຊິ່ງເປັນຂໍ້ບັງຄັບໃນ
ກໍລະນີເຫຼົ່ານີ້.
ໃນຊຸດຄຸນສົມບັດທີ່ແຍກອອກໄປ, "B::Deparse" ກໍາລັງປ່ອຍອອກມາວ່າ "ບໍ່ມີຄຸນສົມບັດ;" ທໍາອິດແທນທີ່ຈະ
"ບໍ່ມີຄຸນສົມບັດ ':ທັງໝົດ';". ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ.
"chdir FH" ຕອນນີ້ຖືກຍົກເລີກໂດຍບໍ່ມີເຄື່ອງຫມາຍວົງຢືມ.
"\my @a" ດຽວນີ້ຖືກແຍກອອກໂດຍບໍ່ມີວົງເລັບ. (ວົງເລັບຈະເຮັດໃຫ້ອາເຣຖືກແປ.)
"ລະບົບ" ແລະ "exec" ຕິດຕາມດ້ວຍຕັນໄດ້ຖືກຍົກເລີກຢ່າງຖືກຕ້ອງ. ໃນເມື່ອກ່ອນຢູ່ທີ່ນັ້ນ
ເປັນ "ເຮັດ" ທີ່ຜິດພາດກ່ອນຕັນ.
"ໃຊ້ QR ຄົງທີ່ => qr/.../flags" ຕາມດ້ວຍ """ =~ QR" ແມ່ນບໍ່ມີຕໍ່ໄປອີກແລ້ວໂດຍບໍ່ມີການ.
ທຸງ.
ກຳລັງອອກ "BEGIN { undef &foo }" ກັບ -w ປຸ່ມເປີດໃຊ້ງານເລີ່ມປ່ອຍອອກມາ
ຄຳເຕືອນ 'unitialized' ໃນ Perl 5.14. ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ.
ການຍົກເລີກການໂທໄປຫາຜູ້ຍ່ອຍດ້ວຍຕົວແບບ "(;+)" ສົ່ງຜົນໃຫ້ເກີດເປັນວົງຮອບທີ່ບໍ່ມີຂອບເຂດ. ໄດ້
ຕົວແບບ "(;$") "(_)" ແລະ "(;_)" ໄດ້ຖືກມອບໃຫ້ບໍ່ຖືກຕ້ອງກ່ອນ, ເຊິ່ງກໍ່ໃຫ້ເກີດ
"foo($a<$b)" ທີ່ຈະແຍກອອກໂດຍບໍ່ມີວົງເລັບ.
ຕອນນີ້ Deparse ສະໜອງການຍ່ອຍຂອງລັດທີ່ກຳນົດໄວ້ໃນຍ່ອຍພາຍໃນ.
· B::Op_private ໄດ້ຖືກເພີ່ມ.
B::Op_private ໃຫ້ຂໍ້ມູນລະອຽດກ່ຽວກັບທຸງທີ່ໃຊ້ໃນ "op_private"
ພາກສະຫນາມຂອງ opcodes perl.
· bigint, bignum, bigrat ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັ່ນ 0.39.
ເອກະສານໃນ CAVEATS ວ່າການໃຊ້ສະຕຣິງເປັນຕົວເລກຈະບໍ່ເອີ້ນຕົວເລກໃຫຍ່ສະເໝີໄປ
overloading, ແລະວິທີການຮຽກຮ້ອງມັນ. [rt.perl.org #123064]
· Carp ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 1.36.
ດຽວນີ້ "Carp::Heavy" ຈະບໍ່ເຂົ້າກັນກັບເວີຊັນທີ່ບໍ່ກົງກັນກັບ Carp ຖ້າ Carp ໃໝ່ກວ່າ 1.12,
ນັບຕັ້ງແຕ່ "Carp::Heavy" ຂອງລໍາໄສ້ໄດ້ຖືກລວມເຂົ້າໄປໃນ Carp ໃນຈຸດນັ້ນ. [perl #121574]
ດຽວນີ້ Carp ຈັດການແພລະຕະຟອມທີ່ບໍ່ແມ່ນ ASCII ໄດ້ດີກວ່າ.
ການແກ້ໄຂຄວາມຜິດພາດ off-by-one ສໍາລັບ Perl < 5.14.
·ຄົງທີ່ໄດ້ຖືກຍົກລະດັບເປັນຮຸ່ນ 1.33.
ໃນປັດຈຸບັນມັນຍອມຮັບຊື່ຄົງທີ່ທີ່ມີຄຸນວຸດທິຢ່າງເຕັມທີ່, ອະນຸຍາດໃຫ້ຄ່າຄົງທີ່ຖືກກໍານົດໄວ້ໃນ
ແພັກເກດອື່ນນອກຈາກຜູ້ໂທ.
· CPAN ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 2.11.
ເພີ່ມການສະຫນັບສະຫນູນສໍາລັບ "Cwd::getdcwd()" ແລະແນະນໍາການແກ້ໄຂສໍາລັບພຶດຕິກໍາທີ່ບໍ່ດີທີ່ເຫັນໄດ້ໃນ
Strawberry Perl 5.20.1.
ແກ້ໄຂ "chdir()" ຫຼັງຈາກການສ້າງ bug ການເພິ່ງພາອາໄສ.
ແນະນຳການຮອງຮັບການທົດລອງສຳລັບ plugins/hooks.
ລວມແຫຼ່ງ "App::Cpan".
ຢ່າກວດເບິ່ງ recursion ກ່ຽວກັບການຂຶ້ນກັບທາງເລືອກ.
ກວດສຸຂະພາບ META.yml ເພື່ອບັນຈຸ hash. [cpan #95271]
· CPAN::Meta::ຄວາມຕ້ອງການໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 2.132.
ເຮັດວຽກກ່ຽວກັບຂໍ້ຈໍາກັດໃນ "version::vpp" ກວດພົບ v-string magic ແລະເພີ່ມການສະຫນັບສະຫນູນ
ສໍາລັບ ExtUtils ທີ່ຈະມາເຖິງ:: MakeMaker bootstrap version.pm ສໍາລັບ Perls ເກົ່າກວ່າ 5.10.0.
· ຂໍ້ມູນ::Dumper ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 2.158.
ແກ້ໄຂ CVE-2014-4330 ໂດຍການເພີ່ມຕົວແປ/ຕົວເລືອກການຕັ້ງຄ່າເພື່ອຈຳກັດການເອີ້ນຄືນເມື່ອ
dumping ໂຄງສ້າງຂໍ້ມູນເລິກ.
ການປ່ຽນແປງເພື່ອແກ້ໄຂບັນຫາການຄຸ້ມຄອງ. XS dumps ເກັບຮັກສາຊື່ລະຫັດບໍ່ຖືກຕ້ອງ
ການອ້າງອີງທີ່ເກັບໄວ້ໃນ GLOB. [perl #122070]
· DynaLoader ໄດ້ຮັບການຍົກລະດັບເປັນຮຸ່ນ 1.32.
ເອົາ "dl_nonlazy" ທົ່ວໂລກອອກຖ້າບໍ່ໄດ້ໃຊ້ໃນ Dynaloader. [perl #122926]
· ການເຂົ້າລະຫັດໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 2.72.
ດຽວນີ້ "piconv" ມີການຈັດການຄວາມຜິດພາດທີ່ດີກວ່າເມື່ອບໍ່ມີຊື່ເຂົ້າລະຫັດ, ແລະ
ສ້າງຄວາມແຕກແຍກໃນເວລາທີ່ຍົກລະດັບການເຂົ້າລະຫັດໃນ perl-5.8.2 ແລະກ່ອນຫນ້ານັ້ນໄດ້ຖືກແກ້ໄຂ.
ການກໍ່ສ້າງໃນໂຫມດ C ++ ໃນ Windows ດຽວນີ້ເຮັດວຽກ.
· Errno ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 1.23.
ເພີ່ມ "-P" ໃສ່ເສັ້ນຄໍາສັ່ງ preprocessor ໃນ GCC 5. GCC ເພີ່ມຄໍາສັ່ງເສັ້ນພິເສດ,
ທໍາລາຍການແຍກວິເຄາະຄໍານິຍາມລະຫັດຄວາມຜິດພາດ. [rt.perl.org #123784]
· ການທົດລອງໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 0.013.
ຄຸນສົມບັດຂອງ Hardcodes ສໍາລັບ Perls ທີ່ເກົ່າກວ່າ 5.15.7.
· ExtUtils::CBuilder ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັ່ນ 0.280221.
ແກ້ໄຂການຖົດຖອຍໃນ Android. [perl #122675]
· ExtUtils::Manifest ໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 1.70.
ແກ້ໄຂຂໍ້ຜິດພາດດ້ວຍການຈັດການຂອງ "maniread()" ຂອງຊື່ໄຟລ໌ທີ່ອ້າງອີງແລະປັບປຸງ "manifind()"
ເພື່ອປະຕິບັດຕາມ symlinks. [perl #122415]
· ExtUtils::ParseXS ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັ່ນ 3.28.
ພຽງແຕ່ປະກາດ "ໄຟລ໌" ບໍ່ໄດ້ໃຊ້ຖ້າພວກເຮົາກໍານົດມັນຢ່າງແທ້ຈິງ. ປັບປຸງລະຫັດ "RETVAL" ທີ່ສ້າງຂຶ້ນ
ການຜະລິດເພື່ອຫຼີກເວັ້ນການອ້າງອິງຊ້ໍາກັນ ST(0). [perl #123278] ເປີດກວ້າງ ແລະເອກະສານ
"/OBJ$/" ໄປຫາ "/REF$/" typemap optimization ສໍາລັບວິທີການ "DESTROY". [perl
#123418]
· Fcntl ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 1.13.
ເພີ່ມການສະຫນັບສະຫນູນສໍາລັບຄໍາສັ່ງ Linux pipe buffer size "fcntl()".
· ໄຟລ໌::Find ໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 1.29.
"find()" ແລະ "finddepth()" ດຽວນີ້ຈະເຕືອນຖ້າຜ່ານການບໍ່ເຫມາະສົມຫຼືສະກົດຜິດ.
ຕົວເລືອກ
· ໄຟລ໌::Glob ຖືກອັບເກຣດເປັນເວີຊັ່ນ 1.24.
ຫຼີກເວັ້ນການຂະຫຍາຍ "SvIV()" ເພື່ອໂທຫາ "get_sv()" ສາມເທື່ອໃນສອງສາມບ່ອນ. [perl
#123606]
· HTTP::Tiny ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັ່ນ 0.054.
ດຽວນີ້ "keep_alive" ແມ່ນປອດໄພ ແລະປອດໄພແລ້ວ.
· IO ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 1.35.
ການປະຕິບັດ XS ໄດ້ຖືກແກ້ໄຂເພື່ອຜົນປະໂຫຍດຂອງ Perls ເກົ່າ.
· IO::Socket ໄດ້ຖືກອັບເກຣດເປັນເວີຊັ່ນ 1.38.
ບັນທຶກຂໍ້ຈໍາກັດຂອງວິທີການ "ເຊື່ອມຕໍ່()". [perl #123096]
· IO::Socket::IP ຖືກອັບເກຣດເປັນເວີຊັ່ນ 0.37.
ການແກ້ໄຂທີ່ດີກວ່າສໍາລັບການຍ່ອຍ "ເຊື່ອມຕໍ່()". [cpan #95983]
[cpan #95983]
ປະຕິບັດການຫມົດເວລາສໍາລັບ "ເຊື່ອມຕໍ່()". [cpan #92075]
· ການເກັບກໍາ libnet ຂອງໂມດູນໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 3.05.
ຮອງຮັບ IPv6 ແລະ SSL ເປັນ "Net::FTP", "Net::NNTP", "Net::POP3" ແລະ "Net::SMTP".
ການປັບປຸງໃນການກວດສອບ "Net::SMTP".
· ທ້ອງຖິ່ນ::ລະຫັດໄດ້ຖືກຍົກລະດັບເປັນເວີຊັນ 3.34.
ແກ້ໄຂຂໍ້ຜິດພາດໃນສະຄຣິບທີ່ໃຊ້ເພື່ອສະກັດຂໍ້ມູນຈາກສະເປຣດຊີດທີ່ປ້ອງກັນການ
ລະຫັດສະກຸນເງິນ SHP ຈາກຖືກພົບເຫັນ. [cpan #94229]
ເພີ່ມລະຫັດໃໝ່ແລ້ວ.
· ຄະນິດສາດ::BigInt ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັນ 1.9997.
ຊິ້ງຂໍ້ມູນການປ່ຽນແປງ POD ຈາກການປ່ອຍ CPAN. "Math::BigFloat->blog(x)" ຈະ
ບາງຄັ້ງກັບຄືນ "blog(2*x)" ເມື່ອຄວາມຖືກຕ້ອງແມ່ນໃຫຍ່ກວ່າ 70 ຕົວເລກ. ຜົນ
ຂອງ "Math::BigFloat->bdiv()" ໃນບໍລິບົດລາຍການຕອນນີ້ພໍໃຈ "x = quotient * ຕົວຫານ +
ສ່ວນທີ່ເຫຼືອ".
ການຈັດການທີ່ຖືກຕ້ອງຂອງ subclasses. [cpan #96254]
[cpan #96254]
· ໂມດູນ::ເມຕາເດຕາໄດ້ຖືກອັບເກຣດເປັນເວີຊັ່ນ 1.000026.
ຮອງຮັບການຕິດຕັ້ງເທິງ perls ເກົ່າດ້ວຍ ExtUtils::MakeMaker ກ່ອນໜ້ານີ້ກວ່າ 6.63_03
· overload ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 1.26.
ການກວດສອບ "ref $sub" ທີ່ຊ້ຳຊ້ອນໄດ້ຖືກລຶບອອກແລ້ວ.
· ການເກັບກໍາໂມດູນ PathTools ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 3.56.
ຄໍາເຕືອນຈາກ gcc ດຽວນີ້ compiler ຖືກຫລີກລ້ຽງໃນເວລາສ້າງ XS.
ຢ່າປ່ຽນ "//" ເປັນ "/" ໃນ Cygwin. [perl #122635]
· perl5db.pl ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 1.49.
debugger ຈະເຮັດໃຫ້ການຢືນຢັນລົ້ມເຫລວ. [perl #124127]
"fork()" ໃນ debugger ພາຍໃຕ້ "tmux" ຕອນນີ້ຈະສ້າງປ່ອງຢ້ຽມໃຫມ່ສໍາລັບ forked.
ຂະບວນການ. [perl #121333]
ຕອນນີ້ debugger ບັນທຶກໄດເລກະທໍລີທີ່ເຮັດວຽກໃນປັດຈຸບັນໃນຕອນເລີ່ມຕົ້ນແລະຟື້ນຟູມັນເມື່ອ
ທ່ານ restart ໂຄງການຂອງທ່ານດ້ວຍ "R" ຫຼື "rerun". [perl #121509]
· PerlIO::scalar ໄດ້ຮັບການຍົກລະດັບເປັນເວີຊັ່ນ 0.22.
ການອ່ານຈາກຕໍາແຫນ່ງທີ່ດີຜ່ານຈຸດສິ້ນສຸດຂອງ scalar ໃນປັດຈຸບັນກັບຄືນຢ່າງຖືກຕ້ອງ
ໄຟລ໌. [perl #123443]
ການສະແຫວງຫາຕໍາແຫນ່ງທາງລົບຍັງລົ້ມເຫລວ, ແຕ່ບໍ່ປ່ອຍໃຫ້ຕໍາແຫນ່ງໄຟລ໌ທີ່ກໍານົດໄວ້
ໄປຍັງສະຖານທີ່ປະຕິເສດ.
"eof()" ຢູ່ໃນຕົວຈັດການ "PerlIO::scalar" ໃນປັດຈຸບັນກັບຄືນຢ່າງຖືກຕ້ອງເມື່ອຕໍາແຫນ່ງໄຟລ໌.
ແມ່ນຜ່ານເຄື່ອງຫມາຍ 2GB ໃນລະບົບ 32-bit.
ຄວາມພະຍາຍາມຂຽນຢູ່ໃນຕໍາແຫນ່ງໄຟລ໌ທີ່ເປັນໄປບໍ່ໄດ້ສໍາລັບເວທີໃນປັດຈຸບັນລົ້ມເຫລວໃນຕອນຕົ້ນ
ແທນທີ່ຈະຫໍ່ຢູ່ທີ່ 4GB.
· Pod::Perldoc ໄດ້ຮັບການປັບປຸງເປັນສະບັບ 3.25.
Filehandles ທີ່ເປີດສໍາລັບການອ່ານຫຼືຂຽນໃນປັດຈຸບັນມີ ":encoding(UTF-8)" ທີ່ກໍານົດໄວ້. [cpan
#98019]
· POSIX ໄດ້ຖືກອັບເກຣດເປັນເວີຊັ່ນ 1.53.
ຟັງຊັນ ແລະຄ່າຄົງທີ່ທາງຄະນິດສາດ C99 (ຕົວຢ່າງ: "acosh", "isinf", "isnan", "ຮອບ",
"trunc"; "M_E", "M_SQRT2", "M_PI") ໄດ້ຖືກເພີ່ມ.
"POSIX::tmpnam()" ຕອນນີ້ສ້າງການເຕືອນການຍົກເລີກການເສື່ອມເສີຍ. [perl #122005]
· ປອດໄພໄດ້ຮັບການອັບເກຣດເປັນເວີຊັນ 2.39 ແລ້ວ.
"reval" ບໍ່ໄດ້ເຜີຍແຜ່ເນື້ອໃນທີ່ເປັນໂມຄະຢ່າງຖືກຕ້ອງ.
· Scalar-List-Utils ໄດ້ຮັບການຍົກລະດັບເປັນເວີຊັນ 1.41.
ໂມດູນໃຫມ່, Sub::Util, ໄດ້ຖືກເພີ່ມ, ປະກອບດ້ວຍຫນ້າທີ່ທີ່ກ່ຽວຂ້ອງກັບ CODE refs,
ລວມທັງ "subname" (ແຮງບັນດານໃຈໂດຍ "Sub::Identity") ແລະ "set_subname" (ຄັດລອກແລະ
ປ່ຽນຊື່ຈາກ "ຍ່ອຍ::ຊື່"). ການນໍາໃຊ້ "GetMagic" ໃນ "List::Util::reduce()" ຍັງມີ
ໄດ້ຮັບການແກ້ໄຂ. [cpan #63211]
· SDBM_File ໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 1.13.
ເຮັດໃຫ້ຂະບວນການສ້າງງ່າຍຂຶ້ນ. [perl #123413]
· ເວລາ:: ສິ້ນໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 1.29.
ເມື່ອພິມ "ເວລາ:: ວິນາທີ", "ລົບ" ຈະບໍ່ສູນເສຍອີກຕໍ່ໄປ.
· Unicode::Collate ໄດ້ຖືກອັບເກຣດເປັນເວີຊັ່ນ 1.12.
ສະບັບ 0.67 ຂອງການປັບປຸງການຫົດຕົວທີ່ບໍ່ຕິດກັນແມ່ນບໍ່ຖືກຕ້ອງຕາມຄ່າເລີ່ມຕົ້ນແລະເປັນ
ສະຫນັບສະຫນູນເປັນພາລາມິເຕີ "long_contraction".
· Unicode::Normalize ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 1.18.
ການປະຕິບັດ XSUB ໄດ້ຖືກໂຍກຍ້າຍອອກໃນເງື່ອນໄຂຂອງ Perl ບໍລິສຸດ.
· Unicode::UCD ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 0.61.
ຟັງຊັນໃໝ່ property_values() ໄດ້ຖືກເພີ່ມເພື່ອສົ່ງຄືນຊັບສິນທີ່ເປັນໄປໄດ້
ຄ່າ.
ຟັງຊັນໃໝ່ charprop() ໄດ້ຖືກເພີ່ມເພື່ອສົ່ງຄືນມູນຄ່າຂອງຊັບສິນທີ່ໃຫ້ສໍາລັບ a
ຈຸດລະຫັດໃຫ້.
ຟັງຊັນໃໝ່ charprops_all() ໄດ້ຖືກເພີ່ມເພື່ອສົ່ງຄືນຄ່າຂອງ Unicode ທັງໝົດ
ຄຸນສົມບັດສໍາລັບຈຸດລະຫັດທີ່ໃຫ້.
A bug ໄດ້ຖືກແກ້ໄຂດັ່ງນັ້ນ propaliases() ຕອບຊື່ສັ້ນ ແລະຍາວທີ່ຖືກຕ້ອງ
ສໍາລັບການຂະຫຍາຍ Perl ທີ່ມັນບໍ່ຖືກຕ້ອງ.
A bug ໄດ້ຖືກແກ້ໄຂດັ່ງນັ້ນ prop_value_aliases() ກັບຄືນ "undef" ແທນທີ່ຈະເປັນຜິດ
ຜົນໄດ້ຮັບສໍາລັບຄຸນສົມບັດທີ່ເປັນສ່ວນຂະຫຍາຍ Perl.
ໂມດູນນີ້ປະຈຸບັນເຮັດວຽກຢູ່ໃນເວທີ EBCDIC.
· utf8 ໄດ້ຮັບການຍົກລະດັບເປັນສະບັບ 1.17
ຄວາມບໍ່ກົງກັນລະຫວ່າງເອກະສານ ແລະລະຫັດໃນ "utf8::downgrade()" ໄດ້ຖືກແກ້ໄຂໃນ
ເງື່ອນໄຂຂອງເອກະສານ. ການໂຕ້ຖຽງທີສອງທີ່ເປັນທາງເລືອກໄດ້ຖືກປະຕິບັດຢ່າງຖືກຕ້ອງເປັນ a
perl boolean (ຄວາມຫມາຍທີ່ແທ້ຈິງ / ບໍ່ຖືກຕ້ອງ) ແລະບໍ່ແມ່ນຈໍານວນເຕັມ.
· ສະບັບໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 0.9909.
ການປ່ຽນແປງຈໍານວນຫລາຍ. ເບິ່ງ ການປ່ຽນແປງ ໄຟລ໌ໃນການແຈກຢາຍ CPAN ສໍາລັບລາຍລະອຽດ.
· Win32 ໄດ້ຮັບການຍົກລະດັບກັບສະບັບ 0.51.
"GetOSName()" ດຽວນີ້ຮອງຮັບ Windows 8.1, ແລະການກໍ່ສ້າງໃນໂຫມດ C ++ ດຽວນີ້ເຮັດວຽກໄດ້.
· Win32API::ໄຟລ໌ໄດ້ຖືກອັບເກຣດເປັນເວີຊັນ 0.1202
ການກໍ່ສ້າງໃນໂຫມດ C ++ ໃນປັດຈຸບັນເຮັດວຽກ.
· XSLoader ໄດ້ຮັບການອັບເກຣດເປັນເວີຊັ່ນ 0.20.
ອະນຸຍາດໃຫ້ XSLoader ໂຫລດໂມດູນຈາກ namespace ທີ່ແຕກຕ່າງກັນ. [perl #122455]
ລົບລ້າງ ໂມດູນ ແລະ ປາກເວົ້າ
ໂມດູນຕໍ່ໄປນີ້ (ແລະໂມດູນທີ່ກ່ຽວຂ້ອງ) ໄດ້ຖືກໂຍກຍ້າຍອອກຈາກ core perl
ການແຈກຢາຍ:
· CGI
· ໂມດູນ::ສ້າງ
ເອກະສານ
ໃຫມ່ ເອກະສານ
Perlunicook
ເອກະສານນີ້, ໂດຍ Tom Christiansen, ໃຫ້ຕົວຢ່າງຂອງການຈັດການ Unicode ໃນ Perl.
ການປ່ຽນແປງ to ທີ່ມີຢູ່ແລ້ວ ເອກະສານ
Perlaix
·ບັນທຶກກ່ຽວກັບການ double ຍາວໄດ້ຖືກເພີ່ມ.
perlapi
·ສັງເກດວ່າ "SvSetSV" ບໍ່ໄດ້ກໍານົດ magic.
· "sv_usepvn_flags" - ແກ້ໄຂເອກະສານທີ່ຈະກ່າວເຖິງການນໍາໃຊ້ "Newx" ແທນ
"malloc".
[perl #121869]
· ຊີ້ແຈງບ່ອນທີ່ "NUL" ອາດຈະຖືກຝັງຢູ່ ຫຼືຕ້ອງການເພື່ອຢຸດສະຕຣິງ.
· ເອກະສານບາງຢ່າງທີ່ຂາດຫາຍໄປໃນເມື່ອກ່ອນເນື່ອງຈາກຄວາມຜິດພາດການຈັດຮູບແບບແມ່ນຕອນນີ້
ລວມຢູ່.
· ດຽວນີ້ການປ້ອນຂໍ້ມູນຖືກຈັດເປັນກຸ່ມຫຼາຍກວ່າໂດຍໄຟລ໌ທີ່ເຂົາເຈົ້າພົບເຫັນ.
· ການຈັດຮຽງຕາມຕົວອັກສອນແມ່ນເຮັດໄດ້ຢ່າງຕໍ່ເນື່ອງ (ອັດຕະໂນມັດໂດຍ POD
generator) ເພື່ອເຮັດໃຫ້ລາຍການຊອກຫາງ່າຍຂຶ້ນໃນເວລາສະແກນ.
perldata
· syntax ຂອງຊື່ຕົວປ່ຽນຕົວອັກສອນດຽວໄດ້ຖືກນໍາມາໃຫ້ທັນສະໄຫມແລະອື່ນໆອີກ
ອະທິບາຍຢ່າງເຕັມສ່ວນ.
· ຕົວເລກຈຸດເລື່ອນເລກຖານສິບຫົກແມ່ນອະທິບາຍ, ຄືກັບ infinity ແລະ NaN.
perlebcdic
· ເອກະສານນີ້ໄດ້ຖືກປັບປຸງຢ່າງໃຫຍ່ຫຼວງໃນການປັບປຸງທີ່ຜ່ານມາ
ສະຫນັບສະຫນູນ EBCDIC.
perlfilter
· ເພີ່ມພາກສ່ວນ LIMITATIONS ແລ້ວ.
perlfunc
·ກ່າວເຖິງວ່າ "ການສຶກສາ ()" ໃນປັດຈຸບັນແມ່ນບໍ່ມີທາງເລືອກ.
· ການໂທຫາ "ລຶບ" ຫຼື "ມີຢູ່" ໃນຄ່າ array ໄດ້ຖືກອະທິບາຍວ່າ "ຢ່າງແຂງແຮງ.
ທໍ້ຖອຍໃຈ" ແທນທີ່ຈະ "ປະຕິເສດ".
·ປັບປຸງເອກະສານ "ຂອງພວກເຮົາ".
· ໃນປັດຈຸບັນ "-l" ສັງເກດວ່າມັນຈະສົ່ງຄືນບໍ່ຖືກຕ້ອງຖ້າ symlinks ບໍ່ໄດ້ຮັບການສະຫນັບສະຫນູນໂດຍໄຟລ໌
ລະບົບ. [perl #121523]
·ສັງເກດວ່າ "exec LIST" ແລະ "ລະບົບ LIST" ອາດຈະກັບຄືນສູ່ Shell ໃນ Win32. ພຽງແຕ່
indirect-object syntax "exec PROGRAM LIST" ແລະ "system PROGRAM LIST" ຈະມີຄວາມຫນ້າເຊື່ອຖື
ຫຼີກເວັ້ນການນໍາໃຊ້ແກະ.
ນີ້ຍັງໄດ້ຖືກບັນທຶກໄວ້ໃນ perlport.
[perl #122046]
perlguts
· ຕົວຢ່າງ OOK ໄດ້ຖືກປັບປຸງເພື່ອບັນຊີສໍາລັບການປ່ຽນແປງ COW ແລະການປ່ຽນແປງໃນ
ການເກັບຮັກສາການຊົດເຊີຍ.
·ລາຍລະອຽດກ່ຽວກັບສັນຍາລັກລະດັບ C ແລະ libperl.t ເພີ່ມ.
· ຂໍ້ມູນກ່ຽວກັບການຈັດການ Unicode ໄດ້ຖືກເພີ່ມເຂົ້າ
·ຂໍ້ມູນກ່ຽວກັບການຈັດການ EBCDIC ໄດ້ຖືກເພີ່ມ
perlhack
·ບັນທຶກໄດ້ຖືກເພີ່ມກ່ຽວກັບການແລ່ນຢູ່ໃນເວທີທີ່ມີຊຸດຕົວອັກສອນທີ່ບໍ່ແມ່ນ ASCII
·ບັນທຶກໄດ້ຖືກເພີ່ມກ່ຽວກັບການທົດສອບການປະຕິບັດ
perlhacktips
· ເອກະສານໄດ້ຖືກເພີ່ມສະແດງໃຫ້ເຫັນເຖິງອັນຕະລາຍຂອງການສົມມຸດວ່າບໍ່ມີ
ການປ່ຽນແປງເນື້ອໃນຂອງຄວາມຊົງຈໍາຄົງທີ່ຊີ້ໃຫ້ເຫັນໂດຍຄ່າກັບຄືນຂອງ Perl
wrappers ສໍາລັບຟັງຊັນ C library.
· ການທົດແທນ "tmpfile", "atoi", "strtol", ແລະ "strtoul" ໄດ້ຖືກແນະນໍາໃນປັດຈຸບັນ.
· ເອກະສານສະບັບປັບປຸງສໍາລັບ "test.valgrind" "make" ເປົ້າຫມາຍ. [perl #121431]
· ຂໍ້ມູນແມ່ນໃຫ້ກ່ຽວກັບການຂຽນໄຟລ໌ທົດສອບ portable ກັບເວທີທີ່ບໍ່ແມ່ນ ASCII.
·ບັນທຶກໄດ້ຖືກເພີ່ມກ່ຽວກັບວິທີການເອົາ backtrace stack ຂອງພາສາ C.
perlhpux
·ສັງເກດວ່າຂໍ້ຄວາມ "ການປະກາດຄືນໃຫມ່ຂອງ "sendpath" ທີ່ມີຊັ້ນເກັບຮັກສາທີ່ແຕກຕ່າງກັນ
ຕົວລະບຸ" ແມ່ນບໍ່ເປັນອັນຕະລາຍ.
perllocale
· ອັບເດດສໍາລັບການເພີ່ມປະສິດທິພາບໃນ v5.22, ພ້ອມກັບຄວາມກະຈ່າງແຈ້ງບາງຢ່າງ.
perlmodstyle
· ແທນທີ່ຈະຊີ້ໄປທີ່ບັນຊີລາຍການໂມດູນ, ພວກເຮົາປັດຈຸບັນຊີ້ໄປທີ່ PrePAN
<http://prepan.org/>.
perlop
· ອັບເດດສໍາລັບການເພີ່ມປະສິດທິພາບໃນ v5.22, ພ້ອມກັບຄວາມກະຈ່າງແຈ້ງບາງຢ່າງ.
perlpodspec
· ສະເພາະຂອງພາສາຝັກແມ່ນມີການປ່ຽນແປງເພື່ອໃຫ້ການເຂົ້າລະຫັດເລີ່ມຕົ້ນຂອງຝັກ
ທີ່ບໍ່ມີຢູ່ໃນ UTF-8 (ເວັ້ນເສຍແຕ່ຈະລະບຸໄວ້ເປັນຢ່າງອື່ນ) ແມ່ນ CP1252 ແທນ ISO 8859-1
(ລາຕິນ1).
perlpolicy
· ດຽວນີ້ພວກເຮົາມີກົດລະບຽບການປະພຶດ p5p ບັນຊີລາຍຊື່ທາງໄປສະນີ, ຕາມທີ່ບັນທຶກໄວ້ໃນ "ມາດຕະຖານຂອງ
ການປະຕິບັດ" ໃນ perlpolicy.
· ເງື່ອນໄຂສໍາລັບການຫມາຍຄຸນສົມບັດການທົດລອງເປັນບໍ່ແມ່ນການທົດລອງໄດ້ກໍານົດໃນປັດຈຸບັນ
ອອກ.
· ມີຄວາມກະຈ່າງແຈ້ງກ່ຽວກັບການປ່ຽນແປງປະເພດໃດແດ່ທີ່ອະນຸຍາດໃນການບຳລຸງຮັກສາ
ປ່ອຍອອກມາ.
perlport
· ຂໍ້ມູນສະເພາະ VMS ລ້າສະໄໝໄດ້ຖືກສ້ອມແປງແລະ/ຫຼືເຮັດໃຫ້ງ່າຍຂຶ້ນ.
·ບັນທຶກກ່ຽວກັບ EBCDIC ໄດ້ຖືກເພີ່ມ.
perlre
· ຄໍາອະທິບາຍຂອງຕົວແກ້ໄຂ "/x" ໄດ້ຖືກຊີ້ແຈງໃຫ້ສັງເກດວ່າຄໍາເຫັນບໍ່ສາມາດ
ສືບຕໍ່ໄປສູ່ແຖວຕໍ່ໄປໂດຍການຫນີພວກເຂົາ; ແລະໃນປັດຈຸບັນມີບັນຊີລາຍຊື່ຂອງທັງຫມົດ
ຕົວອັກສອນທີ່ຖືກພິຈາລະນາເປັນຊ່ອງຫວ່າງໂດຍຕົວແກ້ໄຂນີ້.
· ຕົວແກ້ໄຂ "/n" ໃໝ່ໄດ້ຖືກອະທິບາຍ.
·ບັນທຶກໄດ້ຖືກເພີ່ມກ່ຽວກັບວິທີເຮັດໃຫ້ລະດັບຕົວອັກສອນແບບວົງເລັບແບບເຄື່ອນທີ່ເພື່ອບໍ່.
ເຄື່ອງ ASCII.
perlrebackslash
· ເພີ່ມເອກະສານຂອງ "\b{sb}", "\b{wb}", "\b{gcb}", ແລະ "\b{g}".
perlrecharclass
·ຄວາມກະຈ່າງແຈ້ງໄດ້ຖືກເພີ່ມໃສ່ "ຊ່ວງລັກສະນະ" ໃນ perlrecharclass ກັບຜົນກະທົບ
"[AZ]", "[az]", "[0-9]" ແລະ subranges ໃດໆຂອງມັນຢູ່ໃນເຄື່ອງໝາຍວົງເລັບປົກກະຕິ.
ຫ້ອງຮຽນລັກສະນະຖືກຮັບປະກັນວ່າກົງກັບສິ່ງທີ່ຜູ້ເວົ້າພາສາອັງກິດທີ່ບໍ່ຊື່ສັດຈະ
ຄາດຫວັງໃຫ້ພວກເຂົາກົງກັນ, ເຖິງແມ່ນວ່າຢູ່ໃນເວທີ (ເຊັ່ນ EBCDIC) ທີ່ perl ຕ້ອງເຮັດພິເສດ
ເຮັດວຽກເພື່ອເຮັດສໍາເລັດນີ້.
· ເອກະສານຂອງຫ້ອງຮຽນຕົວອັກສອນແບບວົງເລັບໄດ້ຖືກຂະຫຍາຍໃຫ້ກວມເອົາ
ການປັບປຸງໃນ "qr/[\N{named sequence}]/" (ເບິ່ງພາຍໃຕ້ "ການແກ້ໄຂຂໍ້ຜິດພາດທີ່ເລືອກ").
perlref
· ພາກສ່ວນໃໝ່ໄດ້ຖືກເພີ່ມການມອບໝາຍໃຫ້ອ້າງອີງ
perlsec
· ຄຳເຫັນເພີ່ມກ່ຽວກັບຄວາມຊັບຊ້ອນ algorithmic ແລະ tied hashes.
perlsyn
· ຄວາມບໍ່ແນ່ນອນໃນເອກະສານຂອງ "..." ຖະແຫຼງການໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl
#122661]
· ເງື່ອນໄຂທີ່ຫວ່າງເປົ່າໃນ "ສໍາລັບ" ແລະ "ໃນຂະນະທີ່" ໄດ້ຖືກບັນທຶກໄວ້ໃນ perlsyn.
perlunicode
· ອັນນີ້ໄດ້ມີການດັດແກ້ຢ່າງກວ້າງຂວາງເພື່ອໃຫ້ມັນທັນສະໃໝດ້ວຍການຮອງຮັບ Unicode ໃນປະຈຸບັນ
ແລະເພື່ອເຮັດໃຫ້ມັນສາມາດອ່ານໄດ້ຫຼາຍຂຶ້ນ. ສິ່ງທີ່ໂດດເດັ່ນແມ່ນວ່າ Unicode 7.0 ໄດ້ປ່ຽນແປງສິ່ງທີ່ມັນຄວນຈະເຮັດ
ກັບຕົວອັກສອນທີ່ບໍ່ແມ່ນ. Perl ຮັກສາວິທີການເກົ່າຂອງການຈັດການສໍາລັບເຫດຜົນຂອງການຖອຍຫລັງ
ຄວາມເຂົ້າກັນໄດ້. ເບິ່ງ "ຈຸດລະຫັດ Noncharacter" ໃນ perlunicode.
perluniintro
· ຄໍາແນະນໍາສໍາລັບວິທີໃຫ້ແນ່ໃຈວ່າສະຕຣິງຂອງທ່ານແລະຮູບແບບການສະແດງອອກເປັນປົກກະຕິ
ແປວ່າ Unicode ໄດ້ຖືກປັບປຸງ.
perlvar
· $] ບໍ່ໄດ້ຢູ່ໃນລາຍການວ່າຖືກຍົກເລີກ. ແທນທີ່ຈະ, ການສົນທະນາໄດ້ຖືກເພີ່ມໃສ່
ຂໍ້ດີ ແລະ ຂໍ້ເສຍຂອງການໃຊ້ມັນທຽບກັບ $^V. ເພີ່ມ $OLD_PERL_VERSION ຄືນໃໝ່
ກັບເອກະສານເປັນຮູບແບບຍາວຂອງ $].
· "${^ENCODING}" ຕອນນີ້ຖືກໝາຍວ່າເຊົາໃຊ້ແລ້ວ.
· ການປ້ອນຂໍ້ມູນສໍາລັບ "%^H" ໄດ້ຖືກຊີ້ແຈງເພື່ອຊີ້ບອກວ່າມັນສາມາດຈັດການກັບຄ່າທີ່ງ່າຍດາຍເທົ່ານັ້ນ.
perlvms
· ເອກະສານທີ່ລ້າສະໄໝ ແລະ/ຫຼື ບໍ່ຖືກຕ້ອງໄດ້ຖືກລຶບອອກແລ້ວ.
· ເອກະສານສະບັບປັບປຸງກ່ຽວກັບສະພາບແວດລ້ອມ ແລະການໂຕ້ຕອບຂອງແກະໃນ VMS.
perlxs
· ເພີ່ມການສົນທະນາກ່ຽວກັບບັນຫາທ້ອງຖິ່ນໃນລະຫັດ XS.
ການວິນິດໄສ
ການເພີ່ມເຕີມຫຼືການປ່ຽນແປງຕໍ່ໄປນີ້ໄດ້ຖືກເຮັດໃຫ້ຜົນໄດ້ຮັບການວິນິດໄສ, ລວມທັງຄໍາເຕືອນ
ແລະຂໍ້ຄວາມຜິດພາດທີ່ຮ້າຍແຮງ. ສໍາລັບບັນຊີລາຍຊື່ຄົບຖ້ວນຂອງຂໍ້ຄວາມວິນິດໄສ, ເບິ່ງ perldiag.
ໃຫມ່ ການວິນິດໄສ
ໃຫມ່ ຂໍ້ຜິດພາດ
·ສັນຍາລັກທີ່ບໍ່ດີສໍາລັບ scalar
(P) ການຮ້ອງຂໍພາຍໃນຮ້ອງຂໍໃຫ້ເພີ່ມການເຂົ້າ scalar ກັບບາງສິ່ງບາງຢ່າງທີ່ບໍ່ແມ່ນສັນຍາລັກ
ຕາຕະລາງເຂົ້າ.
· ບໍ່ສາມາດໃຊ້ hash ເປັນການອ້າງອີງໄດ້
(F) ທ່ານໄດ້ພະຍາຍາມໃຊ້ hash ເປັນການອ້າງອີງ, ເຊັ່ນໃນ "%foo->{"bar"}" ຫຼື
"%$ref->{"ສະບາຍດີ"}". ຮຸ່ນຂອງ perl <= 5.6.1 ໃຊ້ເພື່ອອະນຸຍາດໃຫ້ syntax ນີ້, ແຕ່
ບໍ່ຄວນມີ.
· ບໍ່ສາມາດໃຊ້ array ເປັນການອ້າງອີງໄດ້
(F) ທ່ານໄດ້ພະຍາຍາມໃຊ້ array ເປັນການອ້າງອີງ, ເຊັ່ນໃນ "@foo->[23]" ຫຼື "@$ref->[99]".
ເວີຊັນຂອງ perl <= 5.6.1 ໃຊ້ເພື່ອອະນຸຍາດ syntax ນີ້, ແຕ່ບໍ່ຄວນມີ.
· ບໍ່ສາມາດໃຊ້ 'defined(@array)' (ບາງທີເຈົ້າຄວນຍົກເລີກ ກຳນົດ()?)
(F) "defined()" ບໍ່ມີປະໂຫຍດໃນ arrays ເພາະວ່າມັນກວດສອບການບໍ່ໄດ້ກໍານົດ ຜິວ ໜັງ
ຄ່າ. ຖ້າທ່ານຕ້ອງການເບິ່ງວ່າ array ແມ່ນຫວ່າງເປົ່າ, ພຽງແຕ່ໃຊ້
"ຖ້າ (@array) { # ບໍ່ຫວ່າງ }" ຕົວຢ່າງ.
· ບໍ່ສາມາດໃຊ້ 'defined(%hash)' (ບາງທີເຈົ້າຄວນຍົກເລີກ ກຳນົດ()?)
(F) "ກໍານົດ()" ມັກຈະບໍ່ຖືກຕ້ອງຢູ່ໃນ hashes.
ເຖິງແມ່ນວ່າ "ກໍານົດ %hash" ແມ່ນຜິດຢູ່ໃນ hash ທໍາມະດາທີ່ຍັງບໍ່ໄດ້ໃຊ້, ມັນຈະກາຍເປັນຄວາມຈິງໃນ
ສະຖານະການທີ່ບໍ່ຊັດເຈນຫຼາຍ, ລວມທັງຜູ້ເຮັດຊ້ໍາ, ການອ້າງອິງທີ່ອ່ອນແອ, ຊື່ stash,
ເຖິງແມ່ນວ່າຍັງຄົງເປັນຄວາມຈິງຫຼັງຈາກ "undef %hash". ສິ່ງເຫຼົ່ານີ້ເຮັດໃຫ້ "ກໍານົດ %hash" ຢ່າງຍຸດຕິທໍາ
ບໍ່ມີປະໂຍດໃນການປະຕິບັດ, ສະນັ້ນມັນໃນປັດຈຸບັນສ້າງຄວາມຜິດພາດທີ່ຮ້າຍແຮງ.
ຖ້າການກວດສອບການບໍ່ຫວ່າງເປົ່າແມ່ນສິ່ງທີ່ທ່ານຕ້ອງການຫຼັງຈາກນັ້ນພຽງແຕ່ໃສ່ມັນຢູ່ໃນສະພາບການ boolean (ເບິ່ງ
"ຄ່າ Scalar" ໃນ perldata):
ຖ້າ (%hash) {
# ບໍ່ຫວ່າງ
}
ຖ້າທ່ານໄດ້ "ກໍານົດ %Foo::Bar::QUUX" ເພື່ອກວດເບິ່ງວ່າມີຕົວແປແພັກເກັດດັ່ງກ່າວຢູ່ຫຼືບໍ່.
ຫຼັງຈາກນັ້ນທີ່ບໍ່ເຄີຍເປັນທີ່ເຊື່ອຖືໄດ້ແທ້, ແລະບໍ່ແມ່ນວິທີທີ່ດີທີ່ຈະສອບຖາມກ່ຽວກັບການ
ຄຸນສົມບັດຂອງແພັກເກັດ, ຫຼືວ່າມັນຖືກໂຫລດ, ແລະອື່ນໆ.
· ບໍ່ສາມາດ chr %f
(F) ທ່ານໄດ້ຜ່ານຕົວເລກທີ່ບໍ່ຖືກຕ້ອງ (ເຊັ່ນ: infinity ຫຼື not-a-number) ກັບ "chr".
· ບໍ່ສາມາດບີບອັດ %f ໃນຊຸດໄດ້
(F) ທ່ານໄດ້ພະຍາຍາມປ່ຽນ infinity ຫຼື not-a-number ເປັນຕົວອັກສອນທີ່ບໍ່ໄດ້ເຊັນ, ເຊິ່ງ
ບໍ່ມີຄວາມຮູ້ສຶກ.
· ບໍ່ສາມາດບັນຈຸ %f ກັບ '%c' ໄດ້
(F) ທ່ານໄດ້ພະຍາຍາມປ່ຽນ infinity ຫຼື not-a-number ເປັນຕົວອັກສອນ, ເຊິ່ງເຮັດໃຫ້ບໍ່ມີ
ຄວາມຮູ້ສຶກ.
· ບໍ່ສາມາດພິມ %f ດ້ວຍ '%c' ໄດ້
(F) ທ່ານໄດ້ພະຍາຍາມພິມຕົວເລກທີ່ບໍ່ມີຂອບເຂດ ຫຼືບໍ່ແມ່ນຕົວເລກເປັນຕົວອັກສອນ (%c), ເຊິ່ງເຮັດໃຫ້ບໍ່ມີ
ຄວາມຮູ້ສຶກ. ບາງທີເຈົ້າອາດຈະໝາຍເຖິງ '%s', ຫຼືພຽງແຕ່ກຳນົດມັນ?
· ຄໍານິຍາມນາມແຝງ charnames ອາດຈະບໍ່ມີລໍາດັບຂອງຊ່ອງຫວ່າງຫຼາຍອັນ
(F) ທ່ານກໍານົດຊື່ຕົວອັກສອນທີ່ມີຊ່ອງຫວ່າງຫຼາຍຕົວອັກສອນຕິດຕໍ່ກັນ. ປ່ຽນແປງ
ໃຫ້ເຂົາເຈົ້າຢູ່ໃນຊ່ອງດຽວ. ໂດຍປົກກະຕິແລ້ວຊື່ເຫຼົ່ານີ້ຖືກກໍານົດຢູ່ໃນ ":alias" ນໍາເຂົ້າ
argument ກັບ "ໃຊ້ charnames", ແຕ່ພວກເຂົາສາມາດຖືກກໍານົດໂດຍນັກແປທີ່ຕິດຕັ້ງຢູ່ໃນ
$^H{charnames}. ເບິ່ງ "ນາມແຝງແບບກຳນົດເອງ" ໃນນາມສະກຸນ.
· ຄໍານິຍາມຂອງນາມແຝງ charnames ອາດຈະບໍ່ມີພື້ນທີ່ສີຂາວຕໍ່ທ້າຍ
(F) ທ່ານກໍານົດຊື່ຕົວອັກສອນທີ່ລົງທ້າຍດ້ວຍຕົວອັກສອນຊ່ອງ. ເອົາອອກ
ຊ່ອງຕໍ່ທ້າຍ. ໂດຍປົກກະຕິແລ້ວຊື່ເຫຼົ່ານີ້ຖືກກໍານົດຢູ່ໃນ ":alias" argument ນໍາເຂົ້າໄປຫາ
"ໃຊ້ charnames", ແຕ່ພວກເຂົາສາມາດຖືກກໍານົດໂດຍນັກແປທີ່ຕິດຕັ້ງຢູ່ໃນ
$^H{charnames}. ເບິ່ງ "ນາມແຝງແບບກຳນົດເອງ" ໃນນາມສະກຸນ.
· :const ບໍ່ໄດ້ຮັບອະນຸຍາດໃນ subroutines ທີ່ມີຊື່
(F) ຄຸນລັກສະນະ "const" ເຮັດໃຫ້ເກີດການເປີດໃຊ້ງານຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່ ແລະມູນຄ່າຂອງມັນ
captured ໃນເວລາທີ່ມັນແມ່ນ cloned. ກຳນົດການຍ່ອຍທີ່ມີຊື່ບໍ່ໄດ້ຖືກໂຄນແບບນີ້,
ດັ່ງນັ້ນຄຸນລັກສະນະບໍ່ມີຄວາມຫມາຍກ່ຽວກັບພວກມັນ.
· ເລື່ອນເລກຖານສິບຫົກ: ຄວາມຜິດພາດພາຍໃນ
(F) ມີບາງຢ່າງບໍ່ດີໃນການຈັດການ float ເລກຖານສິບຫົກ.
· ເລື່ອນເລກຖານສິບຫົກ: ບໍ່ຮອງຮັບຮູບແບບຄູ່ຍາວ
(F) ທ່ານໄດ້ກໍາຫນົດຄ່າ Perl ໃຫ້ໃຊ້ຄູ່ຍາວແຕ່ພາຍໃນຂອງຄູ່ຍາວ
ຮູບແບບທີ່ບໍ່ຮູ້ຈັກ, ດັ່ງນັ້ນຜົນຜະລິດ float ເລກຖານສິບຫົກແມ່ນເປັນໄປບໍ່ໄດ້.
· suidscript ຜິດກົດຫມາຍ
(F) script ທີ່ດໍາເນີນການພາຍໃຕ້ suidperl ແມ່ນຜິດກົດຫມາຍ somehow.
· ໃນ '(?...)', '(' ແລະ '?' ຕ້ອງຢູ່ຕິດກັນໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(F) ລໍາດັບສອງຕົວອັກສອນ "(?" ໃນສະພາບການນີ້ໃນຮູບແບບການສະແດງອອກປົກກະຕິ
ຄວນເປັນໂທເຄັນທີ່ບໍ່ສາມາດແຍກໄດ້, ບໍ່ມີຫຍັງແຊກແຊງລະຫວ່າງ "(" ແລະ "?",
ແຕ່ເຈົ້າແຍກເຂົາເຈົ້າ.
· ໃນ '(*VERB...)', '(' ແລະ '*' ຕ້ອງຢູ່ຕິດກັນໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ໃນ
ນາງສາວ/
(F) ລໍາດັບສອງຕົວອັກສອນ "(*" ໃນສະພາບການນີ້ໃນຮູບແບບການສະແດງອອກປົກກະຕິ
ຄວນເປັນໂທເຄັນທີ່ແຍກບໍ່ໄດ້, ໂດຍບໍ່ມີຫຍັງແຊກແຊງລະຫວ່າງ "(" ແລະ "*",
ແຕ່ເຈົ້າແຍກເຂົາເຈົ້າ.
· ປະລິມານບໍ່ຖືກຕ້ອງໃນ {,} ໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(F) ຮູບແບບຄ້າຍຄືຕົວປະລິມານ {min,max}, ແຕ່ min ຫຼື max ບໍ່ສາມາດເປັນ
parated ເປັນຕົວເລກທີ່ຖືກຕ້ອງ: ມັນມີສູນນໍາຫນ້າ, ຫຼືມັນສະແດງເຖິງ a ໃຫຍ່ເກີນໄປ
ຈໍານວນເພື່ອຮັບມືກັບ. The <-- ທີ່ນີ້ສະແດງໃຫ້ເຫັນບ່ອນທີ່ຢູ່ໃນການສະແດງອອກປົກກະຕິບັນຫາ
ຖືກຄົ້ນພົບ. ເບິ່ງ perlre.
· '%s' ແມ່ນປະເພດການຜູກມັດທີ່ບໍ່ຮູ້ຈັກໃນ regex
(F) ທ່ານໄດ້ໃຊ້ "\b{...}" ຫຼື "\B{...}" ແລະ "..." ບໍ່ຮູ້ຈັກກັບ Perl. ປະຈຸບັນ
ອັນທີ່ຖືກຕ້ອງແມ່ນໃຫ້ຢູ່ໃນ "\b{}, \b, \B{}, \B" ໃນ perlrebackslash.
· ຂາດ ຫຼືບໍ່ໄດ້ກໍານົດການໂຕ້ຖຽງທີ່ຕ້ອງການ
(F) ທ່ານໄດ້ພະຍາຍາມໂທຫາ "require" ໂດຍບໍ່ມີການໂຕ້ຖຽງຫຼືມີມູນຄ່າທີ່ບໍ່ໄດ້ກໍານົດເປັນ
ການໂຕ້ຖຽງ. "require" ຄາດວ່າຈະມີຊື່ແພັກເກັດຫຼືເອກະສານສະເພາະເປັນ
ການໂຕ້ຖຽງ. ເບິ່ງ "require" ໃນ perlfunc.
ໃນເມື່ອກ່ອນ, "ຕ້ອງການ" ໂດຍບໍ່ມີການໂຕ້ຖຽງຫຼື "undef" ເຕືອນກ່ຽວກັບຊື່ໄຟລ໌ Null.
ໃຫມ່ ຄໍາເຕືອນ
· \C ຖືກຍົກເລີກໃນ regex
(D ປະຕິເສດ) ຫ້ອງຮຽນຕົວອັກສອນ "/\C/" ໄດ້ຖືກຍົກເລີກໃນ v5.20, ແລະຕອນນີ້ປ່ອຍອອກມາ
ເຕືອນໄພ. ມັນມີຈຸດປະສົງທີ່ມັນຈະກາຍເປັນຂໍ້ຜິດພາດໃນ v5.24. ຫ້ອງຮຽນລັກສະນະນີ້
ກົງກັບ byte ດຽວເຖິງແມ່ນວ່າມັນຈະປາກົດຢູ່ໃນຕົວລະຄອນຫຼາຍໄບຕ໌, breaks
encapsulation, ແລະສາມາດເຮັດໃຫ້ UTF-8 strings ເສຍຫາຍ.
· "%s" ແມ່ນຂຽນຢ່າງຊັດເຈນກວ່າພຽງແຕ່ເປັນ "%s" ໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(W regexp) (ພຽງແຕ່ພາຍໃຕ້ "ໃຊ້ re 'ເຄັ່ງຄັດ'" ຫຼືພາຍໃນ "(?[...])")
ທ່ານໄດ້ລະບຸຕົວອັກສອນທີ່ມີວິທີການຂຽນທີ່ຊັດເຈນກວ່ານັ້ນ, ແລະອັນໃດເປັນ
ຍັງສາມາດພົກພາໄປຫາເວທີທີ່ແລ່ນດ້ວຍຊຸດຕົວອັກສອນທີ່ແຕກຕ່າງກັນ.
· argument "%s" ຖືກປະຕິບັດເປັນ 0 increment (++)
(W ຕົວເລກ) ສະຕຣິງທີ່ລະບຸໄດ້ຖືກປ້ອນເປັນການໂຕ້ຖຽງກັບຕົວປະຕິບັດການ "++" ເຊິ່ງ
ຄາດວ່າຈະເປັນຕົວເລກ ຫຼືສະຕຣິງທີ່ກົງກັນ "/^[a-zA-Z]*[0-9]*\z/". ເບິ່ງ "ອັດຕະໂນມັດ-
ເພີ່ມຂຶ້ນແລະການຫຼຸດຜ່ອນອັດຕະໂນມັດ" ໃນ perlop ສໍາລັບລາຍລະອຽດ.
· ທັງສອງ ຫຼື ໄລຍະສຸດທ້າຍຄວນຈະເປັນ Unicode ໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(W regexp) (ພຽງແຕ່ພາຍໃຕ້ "ໃຊ້ re 'ເຄັ່ງຄັດ'" ຫຼືພາຍໃນ "(?[...])")
ໃນຫ້ອງຮຽນຕົວອັກສອນວົງເລັບໃນຮູບແບບການສະແດງອອກປົກກະຕິ, ທ່ານມີຂອບເຂດທີ່
ມີສົ້ນໜຶ່ງທີ່ແນ່ນອນຂອງທີ່ລະບຸໄວ້ໂດຍໃຊ້ "\N{}", ແລະອີກປາຍໜຶ່ງແມ່ນລະບຸໄວ້ໂດຍໃຊ້
ກົນໄກການບໍ່ພົກພາ. Perl ປະຕິບັດຕໍ່ຂອບເຂດເປັນຂອບເຂດ Unicode, ນັ້ນແມ່ນ, ທັງຫມົດ
ຕົວອັກສອນໃນມັນຖືກຖືວ່າເປັນຕົວອັກສອນ Unicode, ແລະອາດຈະເປັນ
ຈຸດລະຫັດທີ່ແຕກຕ່າງກັນໃນບາງເວທີ Perl ດໍາເນີນການ. ຕົວຢ່າງ, "[\N{U+06}-\x08]"
ຖືກປະຕິບັດຄືກັບວ່າທ່ານເວົ້າແທນ "[\N{U+06}-\N{U+08}]", ນັ້ນຄືມັນກົງກັບ
ຕົວອັກສອນທີ່ມີຈຸດລະຫັດໃນ Unicode ແມ່ນ 6, 7, ແລະ 8. ແຕ່ວ່າ "\x08" ອາດຈະ
ຊີ້ບອກວ່າເຈົ້າໝາຍເຖິງບາງສິ່ງບາງຢ່າງທີ່ແຕກຕ່າງ, ສະນັ້ນການເຕືອນໄພຈຶ່ງຖືກຍົກຂຶ້ນມາ.
· ບໍ່ສາມາດເຮັດໄດ້ %s("%s") ໃນຖານທີ່ບໍ່ແມ່ນ UTF-8; ແກ້ໄຂເປັນ "%s".
(W locale) ເຈົ້າແມ່ນ 1) ແລ່ນພາຍໃຕ້ ""use locale""; 2) ທ້ອງຖິ່ນໃນປະຈຸບັນບໍ່ແມ່ນ a
UTF-8 ຫນຶ່ງ; 3) ທ່ານພະຍາຍາມເຮັດການດໍາເນີນງານການປ່ຽນແປງກໍລະນີທີ່ກໍານົດໄວ້
ຕົວອັກສອນ Unicode; ແລະ 4) ຜົນຂອງການປະຕິບັດງານນີ້ຈະປະສົມ Unicode ແລະທ້ອງຖິ່ນ
ກົດລະບຽບ, ເຊິ່ງອາດຈະຂັດແຍ້ງ.
ປະເພດຄໍາເຕືອນ "ທ້ອງຖິ່ນ" ແມ່ນໃຫມ່.
· :const ແມ່ນການທົດລອງ
(S ທົດລອງ::const_attr) ຄຸນລັກສະນະ "const" ແມ່ນການທົດລອງ. ຖ້າທ່ານຕ້ອງການ
ໃຊ້ຄຸນສົມບັດດັ່ງກ່າວ, ປິດການໃຊ້ງານການເຕືອນດ້ວຍ "no warnings 'experimental::const_attr'",
ແຕ່ຮູ້ວ່າການເຮັດດັ່ງນັ້ນທ່ານກໍາລັງມີຄວາມສ່ຽງທີ່ລະຫັດຂອງທ່ານອາດຈະແຕກໃນອະນາຄົດ
ສະບັບ Perl.
· gmtime(%f) ລົ້ມເຫລວ
(W overflow) ເຈົ້າເອີ້ນວ່າ "gmtime" ດ້ວຍຕົວເລກທີ່ມັນບໍ່ສາມາດຈັດການໄດ້: ໃຫຍ່ເກີນໄປ,
ນ້ອຍເກີນໄປ, ຫຼື NaN. ມູນຄ່າກັບຄືນແມ່ນ "undef".
· ເລື່ອນເລກຖານສິບຫົກ: ການລົ້ນເລກກຳລັງ
(W overflow) ຈຸດລອຍຕົວເລກເລກຖານສິບຫົກມີເລກກຳລັງທີ່ໃຫຍ່ກວ່າຈຸດລອຍ
ຈຸດສະຫນັບສະຫນູນ.
· ເລກເລກຖານສິບຫົກ: ການເລື່ອນເລກກຳລັງ
(W overflow) ຈຸດເລື່ອນເລກຖານສິບຫົກມີເລກກຳລັງນ້ອຍກວ່າຈຸດລອຍ
ຈຸດສະຫນັບສະຫນູນ.
· hexadecimal float: mantissa overflow
(W overflow) ຈຸດລອຍຕົວໜັງສືເລກຖານສິບຫົກມີບິດຫຼາຍໃນ mantissa (the
ສ່ວນລະຫວ່າງ "0x" ແລະເລກກຳລັງ, ທີ່ເອີ້ນກັນວ່າ ເສດສ່ວນ ຫຼື ຄວາມໝາຍ)
ກ່ວາຈຸດທີ່ເລື່ອນໄດ້ສະຫນັບສະຫນູນ.
· ການເລື່ອນເລກຖານສິບຫົກ: ການສູນເສຍຄວາມແມ່ນຍໍາ
(W overflow) ຈຸດເລື່ອນເລກຖານສິບຫົກມີຕົວເລກພາຍໃນຫຼາຍກວ່າທີ່ຈະເປັນ
ຜົນຜະລິດ. ອັນນີ້ສາມາດເກີດຈາກຮູບແບບຄູ່ຍາວທີ່ບໍ່ຮອງຮັບ, ຫຼືໂດຍຈຳນວນເຕັມ 64-ບິດ
ບໍ່ສາມາດໃຊ້ໄດ້ (ຕ້ອງການດຶງຕົວເລກພາຍໃຕ້ບາງການຕັ້ງຄ່າ).
· ທ້ອງຖິ່ນ '%s' ອາດຈະບໍ່ເຮັດວຽກໄດ້ດີ.%s
(W locale) ທ່ານກໍາລັງໃຊ້ locale ທີ່ມີຊື່, ເຊິ່ງບໍ່ແມ່ນ UTF-8, ແລະ perl ໃດ.
ໄດ້ກໍານົດວ່າບໍ່ເຂົ້າກັນໄດ້ຢ່າງເຕັມສ່ວນກັບສິ່ງທີ່ມັນສາມາດຈັດການໄດ້. ທີສອງ %s ໃຫ້ a
ເຫດຜົນ.
ປະເພດຄໍາເຕືອນ "ທ້ອງຖິ່ນ" ແມ່ນໃຫມ່.
· ເວລາທ້ອງຖິ່ນ(%f) ລົ້ມເຫລວ
(W overflow) ທ່ານເອີ້ນວ່າ "ເວລາທ້ອງຖິ່ນ" ດ້ວຍຕົວເລກທີ່ມັນບໍ່ສາມາດຈັດການໄດ້: ໃຫຍ່ເກີນໄປ,
ນ້ອຍເກີນໄປ, ຫຼື NaN. ມູນຄ່າກັບຄືນແມ່ນ "undef".
· ການນັບຊໍ້າຄືນທາງລົບບໍ່ເຮັດຫຍັງເລີຍ
(W ຕົວເລກ) ທ່ານໄດ້ພະຍາຍາມປະຕິບັດຕົວປະຕິບັດການຄ້າງຄືນ "x" ໜ້ອຍກວ່າ 0 ເທື່ອ, ເຊິ່ງ
ບໍ່ມີຄວາມຫມາຍ.
· NO-BREAK SPACE ໃນຄຳນິຍາມນາມແຝງ charnames ຖືກຍົກເລີກ
(D ປະຕິເສດ) ທ່ານໄດ້ກໍານົດຊື່ຕົວອັກສອນທີ່ມີຊ່ອງຫວ່າງທີ່ບໍ່ມີການຢຸດ
ລັກສະນະ. ປ່ຽນເປັນພື້ນທີ່ປົກກະຕິ. ປົກກະຕິແລ້ວຊື່ເຫຼົ່ານີ້ແມ່ນໄດ້ຖືກກໍານົດຢູ່ໃນ
":alias" ນໍາເຂົ້າ argument ກັບ "ໃຊ້ charnames", ແຕ່ພວກເຂົາສາມາດຖືກກໍານົດໂດຍນັກແປ.
ຕິດຕັ້ງໃສ່ $^H{charnames}. ເບິ່ງ "ນາມແຝງແບບກຳນົດເອງ" ໃນນາມສະກຸນ.
· ການນັບຊ້ຳແບບບໍ່ຈຳກັດບໍ່ເຮັດຫຍັງເລີຍ
(W ຕົວເລກ) ທ່ານໄດ້ພະຍາຍາມປະຕິບັດຕົວປະຕິບັດການ "x" ການຄ້າງຫ້ອງ "Inf" (ຫຼື "-Inf") ຫຼື NaN
ເວລາ, ເຊິ່ງບໍ່ມີຄວາມຫມາຍ.
· PerlIO ຊັ້ນ ':win32' ແມ່ນທົດລອງ
(S ທົດລອງ::win32_perlio) ຊັ້ນ ":win32" PerlIO ແມ່ນທົດລອງ. ຖ້າເຈົ້າຕ້ອງການ
ເພື່ອມີຄວາມສ່ຽງຕໍ່ການໃຊ້ຊັ້ນນີ້, ພຽງແຕ່ປິດການເຕືອນນີ້:
ບໍ່ມີຄໍາເຕືອນ "ທົດລອງ::win32_perlio";
· ຊ່ວງຂອງເຄື່ອງພິມ ASCII ຄວນຈະເປັນບາງຊຸດຍ່ອຍຂອງ "0-9", "AZ", ຫຼື "az" ໃນ regex;
ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(W regexp) (ພຽງແຕ່ພາຍໃຕ້ "ໃຊ້ re 'ເຄັ່ງຄັດ'" ຫຼືພາຍໃນ "(?[...])")
ກົດລະບຽບທີ່ເຂັ້ມງວດຊ່ວຍຊອກຫາ typos ແລະຄວາມຜິດພາດອື່ນໆ. ບາງທີເຈົ້າບໍ່ໄດ້ຕັ້ງໃຈເປັນ
ຊ່ວງນີ້, ຖ້າ "-" ຫມາຍເຖິງລັກສະນະອື່ນ, ຫຼືຄວນຈະເປັນ
ຫນີ (ເຊັ່ນ "\-"). ຖ້າເຈົ້າຕັ້ງໃຈໄລຍະໜຶ່ງ, ອັນທີ່ເຄີຍໃຊ້ນັ້ນບໍ່ເຄື່ອນທີ່
ລະຫວ່າງແພລະຕະຟອມ ASCII ແລະ EBCDIC, ແລະບໍ່ມີຄວາມຫມາຍທີ່ຊັດເຈນກັບແບບທໍາມະດາ
ຜູ້ອ່ານ.
[3-7] # ຕົກລົງ; ຈະແຈ້ງແລະເຄື່ອນທີ່
[dg] # ຕົກລົງ; ຈະແຈ້ງແລະເຄື່ອນທີ່
[AY] # ຕົກລົງ; ຈະແຈ້ງແລະເຄື່ອນທີ່
[Az] # ຜິດ; ບໍ່ພົກພາ; ບໍ່ຊັດເຈນວ່າຫມາຍຄວາມວ່າແນວໃດ
[aZ] # ຜິດ; ບໍ່ພົກພາ; ບໍ່ຊັດເຈນວ່າຫມາຍຄວາມວ່າແນວໃດ
[%-.] # ຜິດ; ບໍ່ພົກພາ; ບໍ່ຊັດເຈນວ່າຫມາຍຄວາມວ່າແນວໃດ
[\x41-Z] # ຜິດ; ບໍ່ພົກພາ; ບໍ່ຊັດເຈນກັບຄົນທີ່ບໍ່ແມ່ນ geek
(ທ່ານສາມາດບັງຄັບການເຄື່ອນໄຫວໂດຍການລະບຸລະດັບ Unicode, ຊຶ່ງຫມາຍຄວາມວ່າ
ຈຸດສິ້ນສຸດແມ່ນກຳນົດໂດຍ "\N{...}", ແຕ່ຄວາມໝາຍອາດຍັງບໍ່ຈະແຈ້ງ.) The
ກົດລະບຽບທີ່ເຂັ້ມງວດຮຽກຮ້ອງໃຫ້ມີຂອບເຂດທີ່ເລີ່ມຕົ້ນຫຼືຢຸດດ້ວຍຕົວອັກສອນ ASCII ທີ່ເປັນ
ບໍ່ແມ່ນການຄວບຄຸມມີຈຸດສິ້ນສຸດຂອງພວກເຂົາທັງຫມົດເປັນລັກສະນະທີ່ຮູ້ຫນັງສື, ແລະບໍ່ແມ່ນການຫລົບຫນີບາງຢ່າງ
ລໍາດັບ (ເຊັ່ນ "\x41"), ແລະໄລຍະຈະຕ້ອງເປັນຕົວເລກທັງຫມົດ, ຫຼືຕົວອັກສອນຕົວພິມໃຫຍ່ທັງຫມົດ,
ຫຼືຕົວພິມນ້ອຍທັງໝົດ.
· ຊ່ວງຕົວເລກຄວນມາຈາກກຸ່ມດຽວກັນໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(W regexp) (ພຽງແຕ່ພາຍໃຕ້ "ໃຊ້ re 'ເຄັ່ງຄັດ'" ຫຼືພາຍໃນ "(?[...])")
ກົດລະບຽບທີ່ເຂັ້ມງວດຊ່ວຍຊອກຫາ typos ແລະຄວາມຜິດພາດອື່ນໆ. ທ່ານລວມເອົາຂອບເຂດ, ແລະຢູ່ທີ່
ຢ່າງໜ້ອຍໜຶ່ງຈຸດສິ້ນສຸດແມ່ນຕົວເລກທົດສະນິຍົມ. ພາຍໃຕ້ກົດລະບຽບທີ່ເຂັ້ມງວດ, ເມື່ອນີ້
ເກີດຂຶ້ນ, ຈຸດສິ້ນສຸດທັງສອງຄວນຈະເປັນຕົວເລກຢູ່ໃນກຸ່ມດຽວກັນຂອງ 10 ຕົວເລກຕິດຕໍ່ກັນ.
· ການໂຕ້ແຍ້ງຊ້ຳຊ້ອນໃນ %s
(W redundant) ທ່ານເອີ້ນວ່າຟັງຊັນທີ່ມີການໂຕ້ຖຽງຫຼາຍກວ່າທີ່ຕ້ອງການ, ດັ່ງທີ່ລະບຸໄວ້
ໂດຍຂໍ້ມູນພາຍໃນການໂຕ້ຖຽງອື່ນທີ່ທ່ານສະໜອງໃຫ້ (ຕົວຢ່າງ:. ຮູບແບບ printf). ໃນປັດຈຸບັນ
ປ່ອຍອອກມາເມື່ອຮູບແບບ printf-type ຕ້ອງການ argument ໜ້ອຍກວ່າທີ່ສະໜອງໃຫ້,
ແຕ່ອາດຈະຖືກນໍາໃຊ້ໃນອະນາຄົດສໍາລັບ ຕົວຢ່າງ: "ຊອງ" ໃນ perlfunc.
ໝວດຄຳເຕືອນ "ຊ້ຳຊ້ອນ" ແມ່ນໃໝ່. ເບິ່ງ [perl #121025] ນຳ.
.
·ບັນຊີລາຍຊື່ທົດແທນແມ່ນຍາວກວ່າລາຍການຄົ້ນຫາ
ນີ້ບໍ່ແມ່ນການວິນິດໄສໃຫມ່, ແຕ່ໃນການປ່ອຍອອກມາກ່ອນຫນ້ານີ້ບໍ່ໄດ້ສະແດງໂດຍບັງເອີນ
ຖ້າການແປມີຕົວອັກສອນກວ້າງ. ນີ້ໄດ້ຖືກແກ້ໄຂໃນປັດຈຸບັນ, ດັ່ງນັ້ນທ່ານອາດຈະ
ເບິ່ງການວິນິດໄສນີ້ຢູ່ໃນສະຖານທີ່ທີ່ທ່ານບໍ່ເຄີຍມີມາກ່ອນ (ແຕ່ຄວນຈະມີ).
· ການໃຊ້ \b{} ສໍາລັບທ້ອງຖິ່ນທີ່ບໍ່ແມ່ນ UTF-8 ແມ່ນຜິດພາດ. ສົມມຸດຖານ UTF-8
(W locale) ທ່ານກໍາລັງຈັບຄູ່ການສະແດງອອກປົກກະຕິໂດຍໃຊ້ກົດລະບຽບທ້ອງຖິ່ນ, ແລະ Unicode
ຂອບເຂດແມ່ນຖືກຈັບຄູ່, ແຕ່ທ້ອງຖິ່ນບໍ່ແມ່ນ Unicode. ນີ້ບໍ່ໄດ້ເຮັດໃຫ້
ຄວາມຮູ້ສຶກ. Perl ຈະສືບຕໍ່, ໂດຍສົມມຸດວ່າທ້ອງຖິ່ນ Unicode (UTF-8), ແຕ່ຜົນໄດ້ຮັບອາດຈະ
ດີຈະຜິດ ຍົກເວັ້ນຖ້າທ້ອງຖິ່ນເກີດຂຶ້ນເປັນ ISO-8859-1 (ລາຕິນ 1) ບ່ອນທີ່ນີ້
ຂໍ້ຄວາມແມ່ນ spurious ແລະສາມາດຖືກລະເລີຍ.
ປະເພດຄໍາເຕືອນ "ທ້ອງຖິ່ນ" ແມ່ນໃຫມ່.
· ໃຊ້ /u ສໍາລັບ '%s' ແທນ /%s ໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ m/%s/
(W regexp) ທ່ານໄດ້ໃຊ້ຂອບເຂດ Unicode ("\b{...}" ຫຼື "\B{...}") ໃນສ່ວນຫນຶ່ງຂອງ
ການສະແດງອອກປົກກະຕິທີ່ຕົວປັບປ່ຽນຕົວອັກສອນ "/a" ຫຼື "/aa" ມີຜົນບັງຄັບໃຊ້.
ຕົວປັບປ່ຽນສອງອັນນີ້ຊີ້ໃຫ້ເຫັນການຕີຄວາມ ASCII, ແລະນີ້ບໍ່ມີຄວາມຫມາຍສໍາລັບ
ຄໍານິຍາມ Unicode. ການສະແດງອອກປົກກະຕິທີ່ສ້າງຂຶ້ນຈະລວບລວມເພື່ອວ່າ
ເຂດແດນໃຊ້ Unicode ທັງໝົດ. ບໍ່ມີສ່ວນອື່ນຂອງການສະແດງຜົນປົກກະຕິໄດ້ຮັບຜົນກະທົບ.
·ຄຸນນະສົມບັດ bitwise ແມ່ນການທົດລອງ
(S experimental::bitwise) ການເຕືອນນີ້ຈະຖືກປ່ອຍອອກມາຫາກເຈົ້າໃຊ້ຕົວປະຕິບັດການ bitwise ("& | ^
~ &. |. ^. ~.") ດ້ວຍຄຸນສົມບັດ "ບິດບິດ" ທີ່ເປີດໃຊ້ງານ. ພຽງແຕ່ສະກັດກັ້ນການເຕືອນຫາກ
ທ່ານຕ້ອງການທີ່ຈະນໍາໃຊ້ຄຸນສົມບັດ, ແຕ່ຮູ້ວ່າໃນການເຮັດດັ່ງນັ້ນທ່ານກໍາລັງກິນຄວາມສ່ຽງຂອງການ
ການນໍາໃຊ້ຄຸນສົມບັດການທົດລອງທີ່ອາດຈະມີການປ່ຽນແປງຫຼືຖືກລົບອອກໃນສະບັບ Perl ໃນອະນາຄົດ:
ບໍ່ມີຄໍາເຕືອນ "ທົດລອງ::bitwise";
ໃຊ້ຄຸນສົມບັດ "ບິດ";
$x |.= $y;
· ເຊືອກຜູກຊ້າຍທີ່ບໍ່ໄດ້ຫຼົບຫຼີກໃນ regex ຖືກຍົກເລີກ, ຜ່ານໃນ regex; ໝາຍໂດຍ <--
ທີ່ນີ້ໃນ m/%s/
(D deprecated, regexp) ທ່ານໄດ້ໃຊ້ຕົວອັກສອນ "{" ຕົວໜັງສືໃນການສະແດງຜົນປົກກະຕິ
ຮູບແບບ. ທ່ານຄວນປ່ຽນໄປໃຊ້ "\{" ແທນ, ເພາະວ່າ Perl ຮຸ່ນໃນອະນາຄົດ
(tentatively v5.26) ຈະພິຈາລະນານີ້ເປັນຄວາມຜິດພາດ syntax. ຖ້າຫາກວ່າຮູບແບບ
delimiters ຍັງເປັນວົງເລັບ, ແຖບຂວາທີ່ກົງກັນໃດໆ ("}") ຄວນຖືກຫລົບຫນີໄປ
ຫຼີກເວັ້ນການສັບສົນຕົວວິເຄາະ, ສໍາລັບການຍົກຕົວຢ່າງ,
qr{abc\{def\}ghi}
· ການນຳໃຊ້ຕົວໜັງສືທີ່ບໍ່ແມ່ນຕົວອັກສອນໃນຊື່ຕົວແປແມ່ນຖືກຍົກເລີກ
(D ປະຕິເສດ) ການໃຊ້ຕົວໜັງສືທີ່ບໍ່ແມ່ນກຣາບຟິກ (ລວມທັງການຄວບຄຸມ) ໃນແຫຼ່ງທີ່ມາ
ເພື່ອອ້າງອີງເຖິງ ^ FOO ຕົວແປເຊັ່ນ $^X ແລະ "${^GLOBAL_PHASE}" ດຽວນີ້ຖືກປະຕິເສດແລ້ວ.
·ການນໍາໃຊ້ທີ່ບໍ່ມີປະໂຫຍດຂອງຄຸນລັກສະນະ "const"
(w misc) ຄຸນລັກສະນະ "const" ບໍ່ມີຜົນຍົກເວັ້ນຕໍ່ກັບຕົວແບບປິດທີ່ບໍ່ເປີດເຜີຍຊື່.
ທ່ານໄດ້ນຳໃຊ້ມັນກັບສິ່ງທີ່ເຮັດປະຈຳຍ່ອຍຜ່ານ attributes.pm. ອັນນີ້ມີປະໂຫຍດພຽງແຕ່ພາຍໃນ
ຕົວຈັດການຄຸນສົມບັດສຳລັບກິດຈະວັດຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່.
· ການນໍາໃຊ້ທີ່ບໍ່ມີປະໂຫຍດຂອງ /d modifier ໃນຕົວປະຕິບັດການແປເປັນ
ນີ້ບໍ່ແມ່ນການວິນິດໄສໃຫມ່, ແຕ່ໃນການປ່ອຍອອກມາກ່ອນຫນ້ານີ້ບໍ່ໄດ້ສະແດງໂດຍບັງເອີນ
ຖ້າການແປມີຕົວອັກສອນກວ້າງ. ນີ້ໄດ້ຖືກແກ້ໄຂໃນປັດຈຸບັນ, ດັ່ງນັ້ນທ່ານອາດຈະ
ເບິ່ງການວິນິດໄສນີ້ຢູ່ໃນສະຖານທີ່ທີ່ທ່ານບໍ່ເຄີຍມີມາກ່ອນ (ແຕ່ຄວນຈະມີ).
· "ໃຊ້ re 'ເຄັ່ງຄັດ'" ແມ່ນການທົດລອງ
(S ທົດລອງ::re_strict) ສິ່ງທີ່ແຕກຕ່າງກັນເມື່ອສະແດງອອກເປັນປົກກະຕິ
ຮູບແບບຖືກລວບລວມພາຍໃຕ້ 'ເຄັ່ງຄັດ' ອາດຈະມີການປ່ຽນແປງໃນການປ່ອຍ Perl ໃນອະນາຄົດ
ວິທີການທີ່ບໍ່ເຂົ້າກັນ; ຍັງມີຂໍ້ສະເຫນີທີ່ຈະປ່ຽນວິທີການເປີດໃຊ້ການກວດສອບຢ່າງເຂັ້ມງວດ
ແທນທີ່ຈະໃຊ້ subpragma ນີ້. ນີ້ຫມາຍຄວາມວ່າຮູບແບບທີ່ລວບລວມໃນມື້ນີ້ອາດຈະ
ບໍ່ແມ່ນໃນການປ່ອຍ Perl ໃນອະນາຄົດ. ການເຕືອນໄພນີ້ແມ່ນເພື່ອແຈ້ງເຕືອນທ່ານເຖິງຄວາມສ່ຽງນັ້ນ.
· ຄຳເຕືອນ: ບໍ່ສາມາດປິດ filehandle ຢ່າງຖືກຕ້ອງ: %s
ຄຳເຕືອນ: ບໍ່ສາມາດປິດ filehandle %s ຢ່າງຖືກຕ້ອງ: %s
(S io) ກ່ອນຫນ້ານີ້, perl ງຽບໆບໍ່ສົນໃຈຂໍ້ຜິດພາດໃດໆໃນເວລາທີ່ເຮັດການປິດ implicit ຂອງ a.
ມືຈັບໄຟລ໌, ie ບ່ອນທີ່ການນັບອ້າງອີງຂອງ filehandle ບັນລຸສູນ ແລະ
ລະຫັດຂອງຜູ້ໃຊ້ຍັງບໍ່ໄດ້ເອີ້ນວ່າ "ປິດ()"; ຕົວຢ່າງ:
{
ເປີດ $fh, '>', $file ຫຼື die "open: '$file': $!\n";
ພິມ $fh, $data ຫຼືຕາຍ;
} # implicit ປິດຢູ່ທີ່ນີ້
ໃນສະຖານະການເຊັ່ນ: ແຜ່ນເຕັມ, ເນື່ອງຈາກ buffering, ຄວາມຜິດພາດພຽງແຕ່ອາດຈະຖືກກວດພົບ
ໃນລະຫວ່າງການປິດສຸດທ້າຍ, ສະນັ້ນການບໍ່ກວດສອບຜົນໄດ້ຮັບຂອງການປິດແມ່ນອັນຕະລາຍ.
ດັ່ງນັ້ນ perl ໃນປັດຈຸບັນເຕືອນໃນສະຖານະການດັ່ງກ່າວ.
· ຕົວອັກສອນກວ້າງ (U+%X) ໃນ %s
(W locale) ໃນຂະນະທີ່ຢູ່ໃນທ້ອງຖິ່ນດຽວ byte (ie, a non-UTF-8 one), a multi-byte
ລັກສະນະພົບ. Perl ພິຈາລະນາຕົວອັກສອນນີ້ເປັນ Unicode ທີ່ລະບຸໄວ້
ຈຸດລະຫັດ. ການລວມເອົາທ້ອງຖິ່ນທີ່ບໍ່ແມ່ນ UTF-8 ແລະ Unicode ເປັນອັນຕະລາຍ. ເກືອບແນ່ນອນ
ບາງຕົວລະຄອນຈະມີສອງຕົວແທນທີ່ແຕກຕ່າງກັນ. ສໍາລັບຕົວຢ່າງ, ໃນ ISO
ທ້ອງຖິ່ນ 8859-7 (ກຣີກ), ຈຸດລະຫັດ 0xC3 ເປັນຕົວແທນຂອງ Capital Gamma. ແຕ່ກໍ່ຄືກັນ
ບໍ່ 0x393. ອັນນີ້ຈະເຮັດໃຫ້ການປຽບທຽບສະຕຣິງບໍ່ໜ້າເຊື່ອຖື.
ເຈົ້າອາດຈະຕ້ອງຄິດອອກວ່າຕົວລະຄອນຫຼາຍໄບທ໌ນີ້ປະສົມກັບເຈົ້າແນວໃດ
single-byte locale (ຫຼືບາງທີທ່ານຄິດວ່າທ່ານມີທ້ອງຖິ່ນ UTF-8, ແຕ່ Perl
ບໍ່ເຫັນດີ).
ປະເພດຄໍາເຕືອນ "ທ້ອງຖິ່ນ" ແມ່ນໃຫມ່.
ການປ່ຽນແປງ to ທີ່ມີຢູ່ແລ້ວ ການວິນິດໄສ
· <> ຄວນເປັນວົງຢືມ
ຄໍາເຕືອນນີ້ໄດ້ຖືກປ່ຽນເປັນ <> at require-statement should be quotes to make the
ບັນຫາທີ່ລະບຸຕົວຕົນໄດ້ຫຼາຍຂຶ້ນ.
· Argument "%s" ບໍ່ແມ່ນຕົວເລກ %s
ລາຍການ perldiag ສໍາລັບການເຕືອນນີ້ໄດ້ເພີ່ມບັນທຶກການຊີ້ແຈງນີ້:
ໃຫ້ສັງເກດວ່າສໍາລັບ Inf ແລະ NaN (infinity ແລະ not-a-number) the
ຄໍານິຍາມຂອງ "ຕົວເລກ" ແມ່ນຜິດປົກກະຕິບາງຢ່າງ: ສາຍຕົວຂອງມັນເອງ
(ເຊັ່ນ "Inf") ຖືກພິຈາລະນາເປັນຕົວເລກ, ແລະສິ່ງທີ່ປະຕິບັດຕາມພວກມັນແມ່ນ
ພິຈາລະນາບໍ່ແມ່ນຕົວເລກ.
· ສັນຍາລັກທົ່ວໂລກ "%s" ຕ້ອງການຊື່ແພັກເກັດທີ່ຊັດເຈນ
ຂໍ້ຄວາມນີ້ມີ '(ເຈົ້າລືມປະກາດ "%s ຂອງຂ້ອຍບໍ?)' ຕື່ມໃສ່ກັບມັນ, ເພື່ອເຮັດໃຫ້ມັນ.
ມີປະໂຫຍດຫຼາຍຕໍ່ກັບນັກຂຽນໂປລແກລມ Perl ໃໝ່. [perl #121638]
· '"my" variable &foo::bar ບໍ່ສາມາດຢູ່ໃນແພັກເກັດໄດ້' ໄດ້ຖືກປ່ຽນຄໍາເປັນ 'subroutine'
ແທນທີ່ຈະເປັນ 'ຕົວແປ'.
· \N{} ໃນໝວດຕົວອັກສອນຖືກຈຳກັດໃຫ້ເປັນຕົວອັກສອນໃນ regex; ໝາຍໂດຍ <-- ທີ່ນີ້ ໃນ
ນາງສາວ/
ຂໍ້ຄວາມນີ້ມີ ລັກສະນະ ລະດັບ ປ່ຽນເປັນ inverted ລັກສະນະ ລະດັບ or as a ລະດັບ
ຈຸດຈົບ is ເພື່ອສະທ້ອນການປັບປຸງໃນ "qr/[\N{named sequence}]/" (ເບິ່ງຂ້າງລຸ່ມນີ້
"ແກ້ໄຂຂໍ້ຜິດພາດທີ່ເລືອກ").
· panic: frexp
ຂໍ້ຄວາມນີ້ມີ ': %f' ຕື່ມໃສ່ກັບມັນ, ເພື່ອສະແດງໃຫ້ເຫັນວ່າຈຸດລອຍທີ່ໜ້າລັງກຽດແມ່ນຫຍັງ
ຕົວເລກແມ່ນ.
· ສາມາດເຮັດໄດ້ ກ່ອນ ໜ້າ ບັນຫາ on ເປັນບິດ %c ປະຕິບັດການ reworded ເປັນໄປໄດ້ກ່ອນຫນ້າ
ບັນຫາກ່ຽວກັບຕົວປະຕິບັດການ %s bitwise.
· %s ບໍ່ສຳເລັດໃນຊື່ໄຟລ໌ທີ່ມີແຖວໃໝ່
ດຽວນີ້ການເຕືອນໄພນີ້ຖືກຜະລິດເມື່ອແຖວໃໝ່ຢູ່ທ້າຍຊື່ໄຟລ໌ເທົ່ານັ້ນ.
· "ຕົວແປ %s ຈະບໍ່ຖືກແບ່ງປັນ" ຖືກປ່ຽນເປັນ "ລາຍການຍ່ອຍ" ເມື່ອມັນຢູ່
ຕົວຈິງແລ້ວເປັນຍ່ອຍ lexical ທີ່ຈະບໍ່ຢູ່ຮ່ວມກັນ.
· ຄວາມຍາວຕົວປ່ຽນແປງເບິ່ງທາງຫລັງບໍ່ໄດ້ປະຕິບັດໃນ regex m/%s/
ການເຂົ້າ perldiag ສໍາລັບການເຕືອນນີ້ມີຂໍ້ມູນກ່ຽວກັບພຶດຕິກໍາຂອງ Unicode ເພີ່ມ.
ການວິນິດໄສ ການໂຍກຍ້າຍ
· "ການນໍາໃຊ້ທີ່ບໍ່ຫນ້າສົນໃຈຂອງ -foo ແກ້ໄຂເປັນ -&foo()"
ຕົວຈິງແລ້ວບໍ່ມີຄວາມຊັດເຈນຢູ່ທີ່ນີ້, ແລະນີ້ຂັດຂວາງການໃຊ້ຄ່າຄົງທີ່ທີ່ຖືກລົບ;
ຕົວຢ່າງ:, "-Inf".
· "ຄົງທີ່ບໍ່ແມ່ນການອ້າງອີງ FOO"
ລວບລວມເວລາກວດສອບການອ້າງອິງຄົງທີ່ (ຕົວຢ່າງ:, "my_constant->()") ໄດ້
ເອົາອອກ, ເນື່ອງຈາກວ່າມັນບໍ່ໄດ້ຖືກພິຈາລະນາ overloading ເຂົ້າໄປໃນບັນຊີ. [perl #69456]
[perl #69456]
ຜົນປະໂຫຍດ ການປ່ຽນແປງ
find2perl, s2p ແລະ a2p ການໂຍກຍ້າຍ
·ທ x2p/ ໄດເລກະທໍລີໄດ້ຖືກໂຍກຍ້າຍອອກຈາກຫຼັກ Perl.
ນີ້ເອົາ find2perl, s2p ແລະ a2p. ພວກເຂົາທັງຫມົດໄດ້ຖືກປ່ອຍອອກມາໃຫ້ CPAN ແຍກຕ່າງຫາກ
ການແຈກຢາຍ ("App::find2perl", "App::s2p", "App::a2p").
h2ph
· h2ph ດຽວນີ້ຈັດການຄ່າຄົງທີ່ເລກຖານສິບຫົກໃນຄຳນິຍາມມະຫາພາກທີ່ກຳນົດໄວ້ລ່ວງໜ້າຂອງຜູ້ລວບລວມຂໍ້ມູນ,
ດັ່ງທີ່ເຫັນໄດ້ໃນ $Config{cppsymbols}. [perl #123784]
.
encguess
· ບໍ່ຂຶ້ນກັບໂມດູນທີ່ບໍ່ແມ່ນຫຼັກອີກຕໍ່ໄປ.
ການຕັ້ງຄ່າ ແລະ ການລວບລວມ
· ກໍາຫນົດຄ່າ ຕອນນີ້ກວດເບິ່ງ "lrintl()", "lroundl()", "llrintl()", ແລະ "llroundl()".
· ກໍາຫນົດຄ່າ ດ້ວຍ "-Dmksymlinks" ໃນປັດຈຸບັນຄວນຈະໄວຂຶ້ນ. [perl #122002]
.
· ຫ້ອງສະໝຸດ "pthreads" ແລະ "cl" ຈະຖືກເຊື່ອມຕໍ່ໂດຍຄ່າເລີ່ມຕົ້ນຖ້າມີ. ນີ້ອະນຸຍາດໃຫ້
ໂມດູນ XS ທີ່ຕ້ອງການ threading ເພື່ອເຮັດວຽກກ່ຽວກັບ perls ທີ່ບໍ່ແມ່ນ threaded. ໃຫ້ສັງເກດວ່າເຈົ້າຕ້ອງ
ຍັງຜ່ານ "-Dusethreads" ຖ້າທ່ານຕ້ອງການ perl threaded.
· ເພື່ອໃຫ້ໄດ້ຄວາມຊັດເຈນ ແລະ ໄລຍະສຳລັບຕົວເລກຈຸດລອຍຕົວ, ດຽວນີ້ສາມາດໃຊ້ GCC ໄດ້
ຫໍສະມຸດ quadmath ທີ່ປະຕິບັດຕົວເລກຈຸດເລື່ອນຄວາມແມ່ນຍໍາ quadruple
x86 ແລະ IA-64 ເວທີ. ເບິ່ງ ການຕິດຕັ້ງ ສໍາລັບລາຍລະອຽດ.
· MurmurHash64A ແລະ MurmurHash64B ດຽວນີ້ສາມາດຖືກຕັ້ງຄ່າເປັນຟັງຊັນແຮຊພາຍໃນ.
· "ເຮັດ test.valgrind" ໃນປັດຈຸບັນສະຫນັບສະຫນູນການທົດສອບຂະຫນານ.
ຍົກຕົວຢ່າງ:
TEST_JOBS=9 ເຮັດ test.valgrind
ເບິ່ງ "valgrind" ໃນ perlhacktips ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
[perl #121431]
· ຕົວເລືອກການກໍ່ສ້າງ MAD (Msc Attribute Decoration) ຖືກລຶບອອກແລ້ວ
ນີ້ແມ່ນຄວາມພະຍາຍາມທີ່ບໍ່ໄດ້ຮັກສາໄວ້ໃນການປົກປັກຮັກສາຕົ້ນໄມ້ Perl parse ຢ່າງຊື່ສັດຫຼາຍກວ່ານັ້ນ
ການປ່ຽນອັດຕະໂນມັດຂອງ Perl 5 ເປັນ Perl 6 ຈະງ່າຍຂຶ້ນ.
ທາງເລືອກການຕັ້ງຄ່າທີ່ໃຊ້ເວລາສ້າງນີ້ບໍ່ໄດ້ຮັບການຮັກສາໄວ້ສໍາລັບປີ, ແລະອາດຈະມີ
ແຕກຕ່າງກັນຢ່າງຮ້າຍແຮງທັງສອງຝ່າຍ Perl 5 ແລະ Perl 6.
· ທຸງການລວບລວມໃຫມ່, "-DPERL_OP_PARENT" ສາມາດໃຊ້ໄດ້. ສໍາລັບລາຍລະອຽດ, ເບິ່ງໄດ້
ການສົນທະນາຂ້າງລຸ່ມນີ້ຢູ່ທີ່ "ການປ່ຽນແປງພາຍໃນ".
· Pathtools ບໍ່ພະຍາຍາມໂຫຼດ XS ໃນ miniperl ອີກຕໍ່ໄປ. ນີ້ເລັ່ງການກໍ່ສ້າງ perl
ເລັກນ້ອຍ.
ການທົດສອບ
· t/porting/re_context.t ໄດ້ຖືກເພີ່ມເພື່ອທົດສອບວ່າ utf8 ແລະຄວາມເພິ່ງພາອາໄສຂອງມັນພຽງແຕ່ໃຊ້
ຊຸດຍ່ອຍຂອງ "$1..$n" capture vars ທີ່ "Perl_save_re_context()" ແມ່ນ hard-coded ກັບ
localize, ເພາະວ່າຟັງຊັນນັ້ນບໍ່ມີວິທີທີ່ມີປະສິດທິພາບໃນການກໍານົດເວລາ runtime ແມ່ນຫຍັງ
vars ເພື່ອ localize.
·ການທົດສອບສໍາລັບບັນຫາການປະຕິບັດໄດ້ຖືກເພີ່ມເຂົ້າໃນໄຟລ໌ t/perf/taint.t.
· ບາງການທົດສອບການສະແດງອອກປົກກະຕິແມ່ນຂຽນໃນແບບທີ່ພວກມັນຈະແລ່ນຊ້າຫຼາຍ
ຖ້າການເພີ່ມປະສິດທິພາບບາງຢ່າງແຕກ. ການທົດສອບເຫຼົ່ານີ້ໄດ້ຖືກຍ້າຍໄປຢູ່ໃນໄຟລ໌ໃຫມ່,
t/re/speed.t ແລະ t/re/speed_thr.t, ແລະດໍາເນີນການດ້ວຍ "watchdog()".
· "test.pl" ໃນປັດຈຸບັນອະນຸຍາດໃຫ້ "plan skip_all => $reason", ເພື່ອເຮັດໃຫ້ມັນເຂົ້າກັນໄດ້ກັບ
"ທົດສອບ:: ເພີ່ມເຕີມ".
· script ການທົດສອບໃຫມ່, op/infnan.t, ໄດ້ຖືກເພີ່ມເພື່ອທົດສອບວ່າ infinity ແລະ NaN ເຮັດວຽກຫຼືບໍ່
ຢ່າງຖືກຕ້ອງ. ເບິ່ງ "ການປັບປຸງການຈັດການ Infinity ແລະ NaN (not-a-number)".
ເວທີ ສະຫນັບສະຫນູນ
ໄດ້ກັບມາແລ້ວ ເວທີ
ເວທີ IRIX ແລະ Tru64 ເຮັດວຽກອີກເທື່ອຫນຶ່ງ.
ບາງຄວາມລົ້ມເຫລວ "ເຮັດການທົດສອບ" ຍັງຄົງຢູ່: [perl #123977]
ແລະ [perl #123977]
ສໍາລັບ IRIX; [perl #125298]
, [cpan #124212]
, ແລະ [cpan #99605]
ສໍາລັບ Tru104836.
z/OS ແລ່ນລະຫັດ EBCDIC ໜ້າ 1047
Core perl ໃນປັດຈຸບັນເຮັດວຽກຢູ່ໃນເວທີ EBCDIC ນີ້. perls ກ່ອນຫນ້ານີ້ຍັງເຮັດວຽກ, ແຕ່, ເຖິງແມ່ນວ່າ
ເຖິງແມ່ນວ່າການສະຫນັບສະຫນູນບໍ່ໄດ້ຖືກຖອນຢ່າງເປັນທາງການ, perls ທີ່ຜ່ານມາຈະບໍ່ລວບລວມແລະດໍາເນີນການ
ດີ. Perl 5.20 ຈະເຮັດວຽກ, ແຕ່ມີຂໍ້ບົກຜ່ອງຫຼາຍຢ່າງທີ່ໄດ້ຖືກແກ້ໄຂແລ້ວ. CPAN ຫຼາຍ
ໂມດູນທີ່ສົ່ງກັບ Perl ຍັງລົ້ມເຫລວໃນການທົດສອບ, ລວມທັງ "Pod::Simple". ແນວໃດກໍ່ຕາມ
ເວີຊັນຂອງ "Pod::Simple" ໃນປັດຈຸບັນຢູ່ໃນ CPAN ຄວນເຮັດວຽກ; ມັນໄດ້ຖືກແກ້ໄຂຊ້າເກີນໄປທີ່ຈະ
ລວມຢູ່ໃນ Perl 5.22. ການເຮັດວຽກແມ່ນຢູ່ພາຍໃຕ້ການແກ້ໄຂຫຼາຍໂມດູນ CPAN ທີ່ຍັງແຕກຫັກ,
ເຊິ່ງອາດຈະຖືກຕິດຕັ້ງຢູ່ໃນ CPAN ເມື່ອສໍາເລັດ, ດັ່ງນັ້ນທ່ານອາດຈະບໍ່ຈໍາເປັນຕ້ອງ
ລໍຖ້າຈົນກ່ວາ Perl 5.24 ເພື່ອໃຫ້ໄດ້ຮັບສະບັບທີ່ເຮັດວຽກ.
ຢຸດເຊົາ ເວທີ
NextSTEP/OPENSTEP
NeXTSTEP ແມ່ນລະບົບປະຕິບັດງານທີ່ເປັນເຈົ້າຂອງທີ່ມາພ້ອມກັບສະຖານີເຮັດວຽກຂອງ NeXT ໃນ
ຕົ້ນຫາກາງ 90s; OPENSTEP ແມ່ນຂໍ້ມູນສະເພາະຂອງ API ທີ່ສະໜອງໃຫ້ຄືກັບ NeXTSSTEP
ສະພາບແວດລ້ອມໃນລະບົບທີ່ບໍ່ແມ່ນ NeXTSTEP. ທັງສອງໃນປັດຈຸບັນແມ່ນຕາຍໄປດົນນານ, ສະນັ້ນສະຫນັບສະຫນູນການກໍ່ສ້າງ
Perl ກ່ຽວກັບພວກເຂົາໄດ້ຖືກໂຍກຍ້າຍ.
ເວທີສະເພາະ ອ່ືນ
EBCDIC
ການຈັດການພິເສດແມ່ນຕ້ອງການຂອງນາຍພາສາ perl ໃນເວທີ EBCDIC ເພື່ອໃຫ້ໄດ້ຮັບ
"qr/[ij]/" ເພື່ອໃຫ້ກົງກັບ "i" ແລະ "j", ເພາະວ່າມີ 7 ຕົວອັກສອນລະຫວ່າງລະຫັດ.
ຈຸດສໍາລັບ "i" ແລະ "j". ການຈັດການພິເສດນີ້ໄດ້ຖືກຮຽກຮ້ອງພຽງແຕ່ໃນເວລາທີ່ທັງສອງສິ້ນສຸດຂອງ
ຂອບເຂດແມ່ນຕົວໜັງສື. ໃນປັດຈຸບັນມັນຍັງຖືກເອີ້ນອີກຖ້າ "\N{...}" ແບບຟອມໃດນຶ່ງ
ການລະບຸຕົວອັກສອນຕາມຊື່ ຫຼືຈຸດລະຫັດ Unicode ແມ່ນໃຊ້ແທນຕົວໜັງສື.
ເບິ່ງ "ຊ່ວງລັກສະນະ" ໃນ perlrecharclass.
HP-UX
ປະຈຸບັນນີ້ archname ແຍກ use64bitint ຈາກ use64bitall.
Android
ການກໍ່ສ້າງສະຫນັບສະຫນູນໄດ້ຖືກປັບປຸງສໍາລັບການລວບລວມຂ້າມໂດຍທົ່ວໄປແລະສໍາລັບ Android ໃນ
ໂດຍສະເພາະ.
ສ່ວນຂະຫຍາຍ VMS
· ເມື່ອສ້າງຂະບວນການຍ່ອຍໂດຍບໍ່ລໍຖ້າ, ຄ່າກັບຄືນແມ່ນຖືກຕ້ອງແລ້ວ
PID.
· ແກ້ໄຂຕົ້ນແບບເພື່ອໃຫ້ການເຊື່ອມຕໍ່ບໍ່ລົ້ມເຫລວພາຍໃຕ້ການລວບລວມ VMS C++.
· ການກວດຫາ "finite", "finitel", ແລະ "isfinite" ໄດ້ຖືກເພີ່ມໃສ່ "configure.com",
ການຈັດການສະພາບແວດລ້ອມໄດ້ມີການປ່ຽນແປງເລັກນ້ອຍ, ແລະການແກ້ໄຂລັກສະນະເກົ່າແກ່
ການກວດສອບສະຖານະພາບ.
Win32
· miniperl.exe ຕອນນີ້ຖືກສ້າງຂຶ້ນດ້ວຍ "-fno-strict-aliasing", ອະນຸຍາດໃຫ້ສ້າງ 64-bit
ສໍາເລັດໃນ GCC 4.8. [perl #123976]
· "nmake minitest" ໃນປັດຈຸບັນເຮັດວຽກຢູ່ໃນ Win32. ເນື່ອງຈາກບັນຫາການເພິ່ງພາອາໄສ, ທ່ານຈໍາເປັນຕ້ອງສ້າງ
"nmake test-prep" ທໍາອິດ, ແລະຈໍານວນຈໍານວນຫນ້ອຍຂອງການທົດສອບລົ້ມເຫລວ. [perl #123394]
· Perl ໃນປັດຈຸບັນສາມາດຖືກສ້າງຂຶ້ນໃນໂຫມດ C ++ ໃນ Windows ໂດຍການຕັ້ງຄ່າ macro makefile
"USE_CPLUSPLUS" ກັບຄ່າ "define".
·ແບບຟອມບັນຊີລາຍຊື່ຂອງທໍ່ເປີດໄດ້ຖືກປະຕິບັດສໍາລັບ Win32. ຫມາຍເຫດ: ບໍ່ເຫມືອນກັບ "ລະບົບ
LIST" ອັນນີ້ບໍ່ຕົກຢູ່ໃນເປືອກ. [perl #121159]
· ຕົວເລືອກການຕັ້ງຄ່າ "DebugSymbols" ແລະ "DebugFull" ໃໝ່ທີ່ເພີ່ມໃສ່ Windows
makefiles.
·ກ່ອນຫນ້ານີ້, ການລວບລວມໂມດູນ XS (ລວມທັງ CPAN) ໂດຍໃຊ້ Visual C++ ສໍາລັບ Win64
ສົ່ງຜົນໃຫ້ປະມານອາຍແກັສເຕືອນຕໍ່ໄຟລ໌ຈາກ hv_func.h. ການເຕືອນໄພເຫຼົ່ານີ້ມີ
ມິດງຽບ.
·ສະຫນັບສະຫນູນການກໍ່ສ້າງໂດຍບໍ່ມີການ PerlIO ໄດ້ຖືກໂຍກຍ້າຍອອກຈາກ makefiles Windows.
ການກໍ່ສ້າງທີ່ບໍ່ແມ່ນ PerlIO ແມ່ນທັງຫມົດແຕ່ຖືກປະຕິເສດໃນ Perl 5.18.0 ແລະບໍ່ແມ່ນແລ້ວ.
ສະ ໜັບ ສະ ໜູນ ໂດຍ ກໍາຫນົດຄ່າ ໃນລະບົບ POSIX.
· ໃນລະຫວ່າງ 2 ຫາ 6 ມິນລິວິນາທີ ແລະເຈັດການໂທ I/O ໄດ້ຖືກບັນທຶກໄວ້ຕໍ່ຄວາມພະຍາຍາມ
ເປີດໂມດູນ perl ສໍາລັບແຕ່ລະເສັ້ນທາງໃນ @INC.
· ປະຈຸບັນ Intel C builds ແມ່ນສ້າງຂຶ້ນສະເໝີດ້ວຍການເປີດໂໝດ C99.
· %I64d ດຽວນີ້ຖືກໃຊ້ແທນ %lld ສໍາລັບ MinGW.
· ໃນຊັ້ນ ":win32" ທົດລອງ, ອຸປະຕິເຫດໃນ "ເປີດ" ໄດ້ຖືກແກ້ໄຂ. ຍັງເປີດ
/ dev / null (ເຊິ່ງເຮັດວຽກພາຍໃຕ້ຊັ້ນ ":unix" ເລີ່ມຕົ້ນຂອງ Win32 Perl) ຖືກປະຕິບັດ
ສໍາລັບ ":win32". [perl #122224]
· ຕົວເລືອກ makefile ໃໝ່, "USE_LONG_DOUBLE", ໄດ້ຖືກເພີ່ມໃສ່ Windows dmake.
makefile ສໍາລັບ gcc ກໍ່ສ້າງເທົ່ານັ້ນ. ຕັ້ງຄ່ານີ້ເປັນ "ກໍານົດ" ຖ້າທ່ານຕ້ອງການ perl ໃຊ້ຍາວ
ເພີ່ມຂຶ້ນສອງເທົ່າເພື່ອໃຫ້ຄວາມຖືກຕ້ອງ ແລະໄລຍະສໍາລັບຕົວເລກຈຸດລອຍ.
OpenBSD
ໃນ OpenBSD, Perl ຕອນນີ້ຈະເລີ່ມໃຊ້ລະບົບ "malloc" ເນື່ອງຈາກຄວາມປອດໄພ
ຄຸນນະສົມບັດທີ່ມັນສະຫນອງ. ເຄື່ອງຫໍ່ malloc ຂອງຕົນເອງຂອງ Perl ໄດ້ຖືກນໍາໃຊ້ຕັ້ງແຕ່ v5.14 ເນື່ອງຈາກ
ເຫດຜົນການປະຕິບັດ, ແຕ່ໂຄງການ OpenBSD ເຊື່ອວ່າການຊື້ຂາຍແມ່ນມີມູນຄ່າມັນແລະ
ຕ້ອງການໃຫ້ຜູ້ໃຊ້ທີ່ຕ້ອງການຄວາມໄວໂດຍສະເພາະຂໍໃຫ້ມັນ.
[perl #122000] .
ແສງອາທິດ
·ຕອນນີ້ພວກເຮົາຊອກຫາຕົວສັງລວມ Sun Studio ໃນທັງສອງ /opt/solstudio* ແລະ
/opt/solarisstudio*.
· ການກໍ່ສ້າງໃນ Solaris 10 ດ້ວຍ "-Dusedtrace" ຈະລົ້ມເຫລວໃນຕອນຕົ້ນເພາະວ່າບໍ່ໄດ້ປະຕິບັດຕາມ
ອ້າງເຖິງຄວາມເພິ່ງພາອາໄສເພື່ອສ້າງ "perldtrace.h". ເພີ່ມການເພິ່ງພາອາໄສຢ່າງຈະແຈ້ງໃຫ້ກັບ
"ຂຶ້ນກັບ". [perl #120120]
· C99 ທາງເລືອກໄດ້ຖືກອະນາໄມ; hints ຊອກຫາ "solstudio" ເຊັ່ນດຽວກັນກັບ
"SUNWspro"; ແລະການສະຫນັບສະຫນູນສໍາລັບ "setenv" ພື້ນເມືອງໄດ້ຖືກເພີ່ມ.
ພາຍໃນ ການປ່ຽນແປງ
· ການທົດລອງສະຫນັບສະຫນູນໄດ້ຖືກເພີ່ມຂຶ້ນເພື່ອອະນຸຍາດໃຫ້ ops ໃນ optree ເພື່ອຊອກຫາພໍ່ແມ່ຂອງເຂົາເຈົ້າ,
ຖ້າມີ. ອັນນີ້ຖືກເປີດໃຊ້ໂດຍຕົວເລືອກການກໍ່ສ້າງທີ່ບໍ່ແມ່ນຄ່າເລີ່ມຕົ້ນ "-DPERL_OP_PARENT". ມັນແມ່ນ
ຄາດວ່າໃນທີ່ສຸດນີ້ຈະໄດ້ຮັບການເປີດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ, ສະນັ້ນລະຫັດ XS ທີ່
ເຂົ້າເຖິງໂດຍກົງພາກສະຫນາມ "op_sibling" ຂອງ ops ຄວນໄດ້ຮັບການປັບປຸງເພື່ອອະນາຄົດ-
ພິສູດແລ້ວ.
ໃນ "PERL_OP_PARENT" builds, "op_sibling" ພາກສະຫນາມໄດ້ຖືກປ່ຽນຊື່ "op_sibparent" ແລະ
ທຸງໃຫມ່, "op_moresib", ເພີ່ມ. ໃນ op ສຸດທ້າຍໃນຕ່ອງໂສ້ພີ່ນ້ອງ, "op_moresib" ແມ່ນ
false ແລະ "op_sibparent" ຊີ້ໄປຫາພໍ່ແມ່ (ຖ້າມີ) ແທນທີ່ຈະເປັນ "NULL".
ເພື່ອເຮັດໃຫ້ລະຫັດທີ່ມີຢູ່ແລ້ວເຮັດວຽກຢ່າງໂປ່ງໃສບໍ່ວ່າຈະໃຊ້ "PERL_OP_PARENT" ຫຼືບໍ່, a
ຈໍານວນ macro ແລະຟັງຊັນໃຫມ່ໄດ້ຖືກເພີ່ມທີ່ຄວນຈະຖືກນໍາໃຊ້, ແທນທີ່ຈະ
ການຈັດການໂດຍກົງ "op_sibling".
ສໍາລັບກໍລະນີພຽງແຕ່ອ່ານ "op_sibling" ເພື່ອກໍານົດພີ່ນ້ອງຕໍ່ໄປ, ສອງຄົນໃຫມ່
ມະຫາພາກໄດ້ຖືກເພີ່ມ. ການສະແກນແບບງ່າຍໆຜ່ານລະບົບຕ່ອງໂສ້ພີ່ນ້ອງເຊັ່ນນີ້:
ສໍາລັບ (; kid->op_sibling; kid = kid->op_sibling) { ... }
ດຽວນີ້ຄວນຂຽນເປັນ:
ສໍາລັບ (; OpHAS_SIBLING(kid); kid = OpSIBLING(kid)) { ... }
ສໍາລັບການປ່ຽນແປງ optrees, ຟັງຊັນຈຸດປະສົງທົ່ວໄປ "op_sibling_splice()" ໄດ້ຖືກເພີ່ມ,
ເຊິ່ງອະນຸຍາດໃຫ້ມີການຫມູນໃຊ້ລະບົບຕ່ອງໂສ້ຂອງ ops ພີ່ນ້ອງ. ໂດຍການປຽບທຽບກັບ Perl
ຟັງຊັນ "splice()", ມັນອະນຸຍາດໃຫ້ທ່ານຕັດອອກຈາກສູນຫຼືຫຼາຍກວ່າ ops ຈາກຕ່ອງໂສ້ພີ່ນ້ອງ
ແລະແທນທີ່ພວກມັນດ້ວຍ ops ໃໝ່ສູນ ຫຼືຫຼາຍກວ່ານັ້ນ. ມັນຈັດການການອັບເດດທັງໝົດຢ່າງໂປ່ງໃສ
ຂອງອ້າຍເອື້ອຍນ້ອງ, ພໍ່ແມ່, ຕົວຊີ້ op_last ແລະອື່ນໆ.
ຖ້າທ່ານຕ້ອງການຈັດການ ops ໃນລະດັບຕ່ໍາ, ຫຼັງຈາກນັ້ນສາມ macro ໃຫມ່,
"OpMORESIB_set", "OpLASTSIB_set" ແລະ "OpMAYBESIB_set" ມີຈຸດປະສົງເພື່ອເປັນລະດັບຕໍ່າ.
ວິທີການເຄື່ອນທີ່ເພື່ອຕັ້ງຄ່າ "op_sibling" / "op_sibparent" ໃນຂະນະທີ່ຍັງປັບປຸງ "op_moresib".
ທໍາອິດກໍານົດຕົວຊີ້ອ້າຍເອື້ອຍນ້ອງໄປຫາອ້າຍເອື້ອຍນ້ອງໃຫມ່, ອັນທີສອງເຮັດໃຫ້ op ສຸດທ້າຍ
ອ້າຍເອື້ອຍນ້ອງ, ແລະຜູ້ທີສາມຢ່າງມີເງື່ອນໄຂເຮັດການປະຕິບັດຄັ້ງທໍາອິດຫຼືຄັ້ງທີສອງ. ໃຫ້ສັງເກດວ່າ
ບໍ່ຄືກັບ "op_sibling_splice()" macros ເຫຼົ່ານີ້ຈະບໍ່ຮັກສາຄວາມສອດຄ່ອງຂອງພໍ່ແມ່ຢູ່ທີ່
ເວລາດຽວກັນ (ຕົວຢ່າງ: ໂດຍການປັບປຸງ "op_first" ແລະ "op_last" ບ່ອນທີ່ເຫມາະສົມ).
ຟັງຊັນ "Perl_op_parent()" ລະດັບ C ແລະລະດັບ Perl "B::OP::parent()" ມີວິທີການ.
ໄດ້ຖືກເພີ່ມ. ຟັງຊັນ C ມີພຽງແຕ່ພາຍໃຕ້ "PERL_OP_PARENT" builds (ໃຊ້ມັນເປັນ
ຄວາມຜິດພາດໃນການສ້າງເວລາໃນ vanilla perls). "B::OP::parent()" ມີຢູ່ສະເໝີ, ແຕ່ຢູ່ໃນ vanilla
ການກໍ່ສ້າງມັນສະເຫມີກັບຄືນມາ "NULL". ພາຍໃຕ້ "PERL_OP_PARENT", ເຂົາເຈົ້າສົ່ງຄືນພໍ່ແມ່ຂອງ
op ໃນປັດຈຸບັນ, ຖ້າມີ. ຕົວແປ $B::OP::does_parent ອະນຸຍາດໃຫ້ທ່ານກໍານົດວ່າ
"B" ຮອງຮັບການດຶງຂໍ້ມູນພໍ່ແມ່ຂອງ op.
"PERL_OP_PARENT" ຖືກນໍາສະເຫນີໃນ 5.21.2, ແຕ່ການໂຕ້ຕອບໄດ້ຖືກປ່ຽນແປງຢ່າງຫຼວງຫຼາຍ.
ໃນ 5.21.11. ຖ້າທ່ານອັບເດດລະຫັດຂອງທ່ານກ່ອນການປ່ຽນແປງ 5.21.11, ມັນອາດຈະຕ້ອງການ
ການປັບປຸງເພີ່ມເຕີມ. ການປ່ຽນແປງຕົ້ນຕໍຫຼັງຈາກ 5.21.2 ແມ່ນ:
· ມາໂຄຣ "OP_SIBLING" ແລະ "OP_HAS_SIBLING" ຖືກປ່ຽນຊື່ເປັນ "OpSIBLING" ແລະ
"OpHAS_SIBLING" ເພື່ອຄວາມສອດຄ່ອງຂອງມາໂຄ op-manipulating ອື່ນໆ.
· ຊ່ອງຂໍ້ມູນ "op_lastsib" ໄດ້ຖືກປ່ຽນຊື່ເປັນ "op_moresib", ແລະຄວາມຫມາຍຂອງມັນໄດ້ປີ້ນກັບກັນ.
· ມະຫາພາກ "OpSIBLING_set" ໄດ້ຖືກເອົາອອກ, ແລະຖືກແທນທີ່ໂດຍ
"OpMORESIB_set" et al.
· ຟັງຊັນ "op_sibling_splice()" ໃນປັດຈຸບັນຍອມຮັບການໂຕ້ຖຽງ "ພໍ່ແມ່" null ບ່ອນທີ່
splicing ບໍ່ມີຜົນກະທົບຕໍ່ ops ທໍາອິດຫຼືສຸດທ້າຍໃນຕ່ອງໂສ້ພີ່ນ້ອງ
· Macros ໄດ້ຖືກສ້າງຂື້ນເພື່ອອະນຸຍາດໃຫ້ລະຫັດ XS ສາມາດຈັດການ POSIX locale ໄດ້ດີຂຶ້ນ
ໝວດ "LC_NUMERIC". ເບິ່ງ "ຟັງຊັນທີ່ກ່ຽວຂ້ອງກັບທ້ອງຖິ່ນ ແລະມະຫາພາກ" ໃນ perlapi.
· "atoi" ທີ່ຜ່ານມາ et al ຟັງຊັນການທົດແທນ, "grok_atou", ໄດ້ຖືກປ່ຽນແທນແລ້ວ
ໂດຍ "grok_atoUV". ເບິ່ງ perlclib ສໍາລັບລາຍລະອຽດ.
· ຟັງຊັນໃໝ່, "Perl_sv_get_backrefs()", ໄດ້ຖືກເພີ່ມເຂົ້າເຊິ່ງຊ່ວຍໃຫ້ທ່ານສາມາດດຶງຂໍ້ມູນໄດ້.
ການອ້າງອີງທີ່ອ່ອນແອ, ຖ້າມີ, ເຊິ່ງຊີ້ໃຫ້ເຫັນເຖິງ SV.
· ຟັງຊັນ "screaminstr()" ຖືກລຶບອອກແລ້ວ. ເຖິງແມ່ນວ່າຖືກຫມາຍເປັນ API ສາທາລະນະ, ມັນແມ່ນ
ບໍ່ມີເອກະສານ ແລະບໍ່ມີການນຳໃຊ້ໃນໂມດູນ CPAN. ໂທຫາມັນໄດ້ເສຍຊີວິດນັບຕັ້ງແຕ່ 5.17.0.
· ຟັງຊັນ "newDEFSVOP()", "block_start()", "block_end()" ແລະ "intro_my()" ມີ
ໄດ້ຖືກເພີ່ມເຂົ້າໃນ API.
·ພາຍໃນ "ແປງ" ຟັງຊັນໃນ op.c ໄດ້ຖືກປ່ຽນຊື່ "op_convert_list" ແລະເພີ່ມ
ກັບ API.
· ຟັງຊັນ "sv_magic()" ບໍ່ຫ້າມ "ext" magic ໃນຄ່າທີ່ອ່ານເທົ່ານັ້ນ. ຫຼັງຈາກ
ທັງຫມົດ, perl ບໍ່ສາມາດຮູ້ວ່າ magic custom ຈະດັດແປງ SV ຫຼືບໍ່. [perl
#123103] .
· ການເຂົ້າເຖິງ "CvPADLIST" ໃນ perlapi ໃນ XSUB ແມ່ນໄດ້ຖືກຫ້າມແລ້ວ.
ຊ່ອງຂໍ້ມູນ "CvPADLIST" ໄດ້ຖືກນໍາໃຊ້ຄືນໃຫມ່ສໍາລັບຈຸດປະສົງພາຍໃນທີ່ແຕກຕ່າງກັນສໍາລັບ XSUBs. ດັ່ງນັ້ນ
ໂດຍສະເພາະ, ທ່ານບໍ່ສາມາດອີງໃສ່ມັນເປັນ NULL ເປັນການທົດສອບວ່າ CV ເປັນ
XSUB. ໃຊ້ "CvISXSUB()" ແທນ.
· SVs ຂອງປະເພດ "SVt_NV" ໃນປັດຈຸບັນບາງຄັ້ງບໍ່ມີຮ່າງກາຍໃນເວລາທີ່ການຕັ້ງຄ່າການກໍ່ສ້າງແລະ
ເວທີອະນຸຍາດໃຫ້ມັນ: ໂດຍສະເພາະ, ໃນເວລາທີ່ "sizeof(NV) <= sizeof(IV)". "ບໍ່ມີຮ່າງກາຍ" ຫມາຍຄວາມວ່າ
ວ່າຄ່າ NV ຈະຖືກເກັບໄວ້ໂດຍກົງຢູ່ໃນຫົວຂອງ SV, ໂດຍບໍ່ມີການຕ້ອງການ a
ຮ່າງກາຍແຍກຕ່າງຫາກທີ່ຈະຈັດສັນ. ເຄັດລັບນີ້ໄດ້ຖືກນໍາໃຊ້ແລ້ວສໍາລັບ IVs ນັບຕັ້ງແຕ່ 5.9.2
(ເຖິງແມ່ນວ່າໃນກໍລະນີຂອງ IVs, ມັນຖືກນໍາໃຊ້ສະເຫມີ, ບໍ່ວ່າຈະເປັນເວທີແລະການກໍ່ສ້າງ
ການຕັ້ງຄ່າ).
· $DB::single, $DB::signal ແລະ $DB::trace variables ໃນປັດຈຸບັນໄດ້ກໍານົດ - ແລະໄດ້ຮັບ magic ທີ່.
ເກັບຮັກສາຄຸນຄ່າຂອງເຂົາເຈົ້າເປັນ IVs, ແລະ IVs ເຫຼົ່ານັ້ນຖືກນໍາໃຊ້ໃນເວລາທີ່ການທົດສອບມູນຄ່າຂອງເຂົາເຈົ້າໃນ
"pp_dbstate()". ນີ້ປ້ອງກັນບໍ່ໃຫ້ perl ເກີດຂຶ້ນຊ້ຳໆທີ່ບໍ່ມີຂອບເຂດຖ້າວັດຖຸທີ່ໂຫຼດເກີນ
ຖືກມອບໝາຍໃຫ້ກັບຕົວແປໃດນຶ່ງເຫຼົ່ານັ້ນ. [perl #122445]
.
· "Perl_tmps_grow()", ເຊິ່ງຖືກຫມາຍເປັນ API ສາທາລະນະແຕ່ບໍ່ມີເອກະສານ, ໄດ້
ລຶບອອກຈາກ API ສາທາລະນະ. ການປ່ຽນແປງນີ້ບໍ່ມີຜົນຕໍ່ລະຫັດ XS ທີ່ໃຊ້ລະຫັດ
"EXTEND_MORTAL" macro ເພື່ອຂະຫຍາຍການຕາຍຂອງ stack ລ່ວງໜ້າ.
· ພາຍໃນຂອງ Perl ບໍ່ໄດ້ຕັ້ງ ຫຼືໃຊ້ທຸງ "SVs_PADMY" ອີກຕໍ່ໄປ. "SvPADMY()" ດຽວນີ້ກັບຄືນມາ
ຄ່າທີ່ແທ້ຈິງຂອງອັນໃດນຶ່ງທີ່ບໍ່ໄດ້ໝາຍ "PADTMP" ແລະ "SVs_PADMY" ຖືກກຳນົດເປັນ 0.
· ມະຫາພາກ "SETsv" ແລະ "SETsvUN" ຖືກລຶບອອກແລ້ວ. ພວກເຂົາເຈົ້າບໍ່ໄດ້ຖືກນໍາໃຊ້ຕໍ່ໄປອີກແລ້ວໃນ
ຫຼັກນັບຕັ້ງແຕ່ຄໍາຫມັ້ນສັນຍາ 6f1401dc2a ຫ້າປີກ່ອນ, ແລະບໍ່ໄດ້ພົບເຫັນຢູ່ໃນ CPAN.
· "SvFAKE" ບິດ (ບໍ່ໄດ້ໃຊ້ໃນ HVs) ໄດ້ຮັບການສະຫງວນຢ່າງເປັນທາງການໂດຍ David Mitchell ສໍາລັບອະນາຄົດ
ເຮັດວຽກກ່ຽວກັບ vtables.
· ຟັງຊັນ "sv_catpvn_flags()" ຍອມຮັບທຸງ "SV_CATBYTES" ແລະ "SV_CATUTF8", ເຊິ່ງ.
ລະບຸວ່າສະຕຣິງຕໍ່ທ້າຍແມ່ນ bytes ຫຼື UTF-8, ຕາມລໍາດັບ. (ທຸງເຫຼົ່ານີ້ມີ
ໃນຄວາມເປັນຈິງແມ່ນມີມາຕັ້ງແຕ່ 5.16.0, ແຕ່ເມື່ອກ່ອນບໍ່ໄດ້ຖືກຖືວ່າເປັນສ່ວນຫນຶ່ງຂອງ API ໄດ້.)
·ຫ້ອງຮຽນ opcode ໃຫມ່, "METHOP", ໄດ້ຖືກນໍາສະເຫນີ. ມັນຖືຂໍ້ມູນທີ່ໃຊ້ຢູ່
runtime ເພື່ອປັບປຸງການປະຕິບັດຂອງການໂທວິທີການຫ້ອງຮຽນ / ວັດຖຸ.
"OP_METHOD" ແລະ "OP_METHOD_NAMED" ໄດ້ປ່ຽນຈາກການເປັນ "UNOP/SVOP" ມາເປັນ
"METHOP".
· "cv_name()" ເປັນຟັງຊັນ API ໃຫມ່ທີ່ສາມາດຜ່ານ CV ຫຼື GV. ມັນສົ່ງຄືນ SV
ມີຊື່ຂອງຊຸດຍ່ອຍ, ເພື່ອໃຊ້ໃນການວິນິດໄສ.
[perl #116735] [perl #116735]
· "cv_set_call_checker_flags()" ເປັນຟັງຊັນ API ໃຫມ່ທີ່ເຮັດວຽກຄືກັບ
"cv_set_call_checker()", ຍົກເວັ້ນວ່າມັນອະນຸຍາດໃຫ້ຜູ້ໂທລະບຸວ່າການໂທ
checker ຕ້ອງການ GV ເຕັມສໍາລັບການລາຍງານຊື່ຂອງ subroutine ຂອງ, ຫຼືວ່າມັນອາດຈະເປັນ
ຜ່ານ CV ແທນ. ບໍ່ວ່າຄ່າໃດຖືກສົ່ງຜ່ານຈະເປັນ "cv_name()".
"cv_set_call_checker()" ຮັບປະກັນວ່າຈະມີ GV, ແຕ່ມັນອາດຈະຕ້ອງສ້າງຫນຶ່ງ.
ສຸດບິນ, ທີ່ບໍ່ມີປະສິດທິພາບ. [perl #116735]
· "CvGV" (ເຊິ່ງບໍ່ແມ່ນສ່ວນຫນຶ່ງຂອງ API) ໃນປັດຈຸບັນເປັນມະຫາພາກທີ່ສັບສົນຫຼາຍ, ເຊິ່ງອາດຈະເອີ້ນວ່າເປັນ.
ປະຕິບັດຫນ້າທີ່ແລະປັບປຸງ GV. ສໍາລັບກໍລະນີທີ່ມັນຖືກນໍາໃຊ້ເປັນ boolean,
"CvHASGV" ໄດ້ຖືກເພີ່ມ, ເຊິ່ງຈະກັບຄືນຄວາມຈິງສໍາລັບ CVs ທີ່ມີ GVs, ແຕ່.
ໂດຍບໍ່ມີການຟື້ນຟູ GV. "CvGV" ຍັງສົ່ງຄືນ GV ໃນປັດຈຸບັນສໍາລັບການຍ່ອຍ lexical. [perl
#120441]
· "sync_locale" ໃນຟັງຊັນ perlapi ໄດ້ຖືກເພີ່ມເຂົ້າໃນ API ສາທາລະນະ. ການປ່ຽນແປງ
ສະຖານທີ່ຂອງໂປຣແກຣມຄວນຫຼີກເວັ້ນດ້ວຍລະຫັດ XS. ຢ່າງໃດກໍຕາມ, ແນ່ນອນວ່າບໍ່ແມ່ນ Perl
ຫ້ອງສະຫມຸດທີ່ເອີ້ນວ່າ XS ຈໍາເປັນຕ້ອງເຮັດເຊັ່ນ "Gtk". ໃນເວລາທີ່ນີ້ເກີດຂຶ້ນ, Perl ຕ້ອງການ
ໄດ້ຮັບການບອກວ່າສະຖານທີ່ມີການປ່ຽນແປງ. ໃຊ້ຟັງຊັນນີ້ເພື່ອເຮັດແນວນັ້ນ, ກ່ອນທີ່ຈະກັບຄືນມາ
ໄປ Perl.
·ກໍານົດແລະປ້າຍສໍາລັບທຸງໃນພາກສະຫນາມ "op_private" ຂອງ OPs ໃນປັດຈຸບັນແມ່ນອັດຕະໂນມັດ.
ສ້າງຂຶ້ນຈາກຂໍ້ມູນໃນ regen/op_private. ຜົນກະທົບທີ່ສັງເກດເຫັນຂອງເລື່ອງນີ້ແມ່ນວ່າບາງ
ຜົນຜະລິດທຸງຂອງ "Concise" ອາດຈະແຕກຕ່າງກັນເລັກນ້ອຍ, ແລະຜົນຜະລິດທຸງຂອງ
"perl -Dx" ອາດຈະແຕກຕ່າງກັນຢ່າງຫຼວງຫຼາຍ (ພວກເຂົາທັງສອງໃຊ້ຊຸດປ້າຍຊື່ດຽວກັນໃນປັດຈຸບັນ). ນອກຈາກນີ້,
debugging builds ໃນປັດຈຸບັນມີການຢືນຢັນໃຫມ່ໃນ "op_free()" ເພື່ອຮັບປະກັນວ່າ op ບໍ່ໄດ້.
ມີທຸງທີ່ບໍ່ຮູ້ຈັກຕັ້ງຢູ່ໃນ "op_private".
· ຕົວແປ "PL_sv_objcount" ທີ່ຖືກຍົກເລີກໄດ້ຖືກລຶບອອກແລ້ວ.
· ຕອນນີ້ Perl ພະຍາຍາມຮັກສາໝວດໝູ່ທ້ອງຖິ່ນ "LC_NUMERIC" ເປັນ "C" ຍົກເວັ້ນປະມານ
ການດໍາເນີນງານທີ່ຕ້ອງການໃຫ້ມັນຕັ້ງເປັນທ້ອງຖິ່ນພື້ນຖານຂອງໂຄງການ. ນີ້ປົກປ້ອງ
ໂມດູນ XS ຫຼາຍອັນທີ່ບໍ່ສາມາດຮັບມືກັບຕົວເລກຮາກທົດສະນິຍົມທີ່ບໍ່ແມ່ນຈຸດ.
ກ່ອນທີ່ຈະເປີດຕົວນີ້, Perl ໄດ້ເລີ່ມປະເພດນີ້ໄປຫາ "C", ແຕ່ໂທຫາ
"POSIX::setlocale()" ຈະປ່ຽນມັນ. ໃນປັດຈຸບັນການໂທດັ່ງກ່າວຈະມີການປ່ຽນແປງພື້ນຖານ
ທ້ອງຖິ່ນຂອງ "LC_NUMERIC" ປະເພດສໍາລັບໂຄງການ, ແຕ່ທ້ອງຖິ່ນເປີດເຜີຍລະຫັດ XS
ຈະຍັງຄົງເປັນ "C". ມີມາໂຄຣໃໝ່ເພື່ອຈັດການ LC_NUMERIC locale, ລວມທັງ
"STORE_LC_NUMERIC_SET_TO_NEEDED" ແລະ "STORE_LC_NUMERIC_FORCE_TO_UNDERLYING". ເບິ່ງ
"ຟັງຊັນທີ່ກ່ຽວຂ້ອງກັບທ້ອງຖິ່ນແລະມະຫາພາກ" ໃນ perlapi.
· ເມໂຄຣໃໝ່ "isUTF8_CHAR" ໄດ້ຖືກຂຽນໄວ້ ເຊິ່ງກຳນົດໄດ້ຢ່າງມີປະສິດທິພາບວ່າສະຕຣິງຫຼືບໍ່
ກໍານົດໂດຍຕົວກໍານົດການຂອງມັນເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນ UTF-8 ທີ່ມີຮູບແບບທີ່ດີ.
· ຟັງຊັນ API ສ່ວນຕົວຕໍ່ໄປນີ້ໄດ້ເອົາພາລາມິເຕີບໍລິບົດຂອງມັນອອກ:
"Perl_cast_ulong", "Perl_cast_i32", "Perl_cast_iv", "Perl_cast_uv",
"Perl_cv_const_sv", "Perl_mg_find", "Perl_mg_findext", "Perl_mg_magical",
"Perl_mini_mktime", "Perl_my_dirfd", "Perl_sv_backoff", "Perl_utf8_hop".
ໃຫ້ສັງເກດວ່າສະບັບ prefix-less ຂອງຟັງຊັນເຫຼົ່ານັ້ນເປັນສ່ວນຫນຶ່ງຂອງ API ສາທາລະນະ,
ເຊັ່ນ "cast_i32()", ຍັງຄົງບໍ່ໄດ້ຮັບຜົນກະທົບ.
· ປະເພດ "PADNAME" ແລະ "PADNAMELIST" ໃນປັດຈຸບັນແມ່ນປະເພດແຍກຕ່າງຫາກ, ແລະບໍ່ແມ່ນງ່າຍດາຍ
ນາມແຝງສໍາລັບ SV ແລະ AV. [perl #123223]
.
· ຊື່ Pad ໃນປັດຈຸບັນແມ່ນ UTF-8 ສະເຫມີ. ມະຫາພາກ "PadnameUTF8" ກັບຄືນຄວາມຈິງສະເໝີ.
ກ່ອນຫນ້ານີ້, ນີ້ແມ່ນກໍລະນີທີ່ມີປະສິດຕິຜົນແລ້ວ, ແຕ່ວ່າການສະຫນັບສະຫນູນສອງຢ່າງທີ່ແຕກຕ່າງກັນ
ການເປັນຕົວແທນພາຍໃນຂອງຊື່ແຜ່ນໄດ້ຖືກໂຍກຍ້າຍອອກໃນປັດຈຸບັນ.
· ຫ້ອງຮຽນ op ໃຫມ່, "UNOP_AUX", ໄດ້ຖືກເພີ່ມ. ນີ້ແມ່ນປະເພດຍ່ອຍຂອງ "UNOP" ທີ່ມີ
ຊ່ອງຂໍ້ມູນ "op_aux" ເພີ່ມ, ເຊິ່ງຊີ້ໃຫ້ເຫັນເຖິງ array ຂອງສະຫະພັນຂອງ UV, SV* ແລະອື່ນໆ. ມັນແມ່ນ.
ມີຈຸດປະສົງເພື່ອບ່ອນທີ່ op ຕ້ອງການເກັບຮັກສາຂໍ້ມູນຫຼາຍກ່ວາ "op_sv" ງ່າຍດາຍຫຼືໃດກໍ່ຕາມ.
ໃນປັດຈຸບັນ op ສະເພາະຂອງປະເພດນີ້ແມ່ນ "OP_MULTIDEREF" (ເບິ່ງລາຍການຕໍ່ໄປ).
· op ໃຫມ່ໄດ້ຖືກເພີ່ມ, "OP_MULTIDEREF", ເຊິ່ງປະຕິບັດຫນຶ່ງຫຼືຫຼາຍ array ຊ້ອນແລະ
ການຊອກຫາ hash ບ່ອນທີ່ກະແຈແມ່ນຕົວແປຄົງທີ່ ຫຼືງ່າຍດາຍ. ຕົວຢ່າງເຊັ່ນ
ສະແດງອອກ $a[0]{$k}[$i], ເຊິ່ງຜ່ານມາກ່ຽວຂ້ອງກັບສິບ "rv2Xv", "Xelem", "gvsv" ແລະ
"const" ops ປະຈຸບັນຖືກປະຕິບັດໂດຍ "multideref" ops ດຽວ. ມັນຍັງສາມາດຈັດການກັບ "ທ້ອງຖິ່ນ",
"ມີຢູ່" ແລະ "ລຶບ". ການສະແດງດັດຊະນີທີ່ບໍ່ງ່າຍດາຍເຊັ່ນ "[$i+1]" ແມ່ນຍັງເຮັດຢູ່
ການນໍາໃຊ້ "aelem"/"helem", ແລະການຊອກຫາ array ລະດັບດຽວທີ່ມີດັດຊະນີຄົງທີ່ຂະຫນາດນ້ອຍແມ່ນ.
ຍັງເຮັດໄດ້ໂດຍໃຊ້ "aelemfast".
ການຄັດເລືອກ bow ແກ້ໄຂ
· "ປິດ" ໃນປັດຈຸບັນກໍານົດ $!
ເມື່ອມີຄວາມຜິດພາດ I/O ເກີດຂຶ້ນ, ຄວາມຈິງທີ່ວ່າມີຄວາມຜິດພາດໄດ້ຖືກບັນທຶກໄວ້ໃນ
ຈັບ. "ປິດ" ກັບຄືນ false ສໍາລັບຕົວຈັບດັ່ງກ່າວ. ກ່ອນຫນ້ານີ້, ມູນຄ່າຂອງ $! ຈະ
ບໍ່ໄດ້ຮັບການແຕະຕ້ອງໂດຍ "ໃກ້ຊິດ", ດັ່ງນັ້ນສົນທິສັນຍາທົ່ວໄປຂອງການຂຽນ "ປິດ $fh ຫຼືຕາຍ $!" ໄດ້
ບໍ່ເຮັດວຽກທີ່ເຊື່ອຖືໄດ້. ໃນປັດຈຸບັນ handles ບັນທຶກມູນຄ່າຂອງ $!, ເຊັ່ນດຽວກັນ, ແລະ "ປິດ" ຟື້ນຟູ
ມັນ.
· "ບໍ່ re" ໃນປັດຈຸບັນສາມາດປິດທຸກສິ່ງທຸກຢ່າງທີ່ "ໃຊ້ re" ເປີດໃຊ້
ກ່ອນຫນ້ານີ້, ແລ່ນ "no re" ຈະປິດພຽງແຕ່ສອງສາມຢ່າງ. ໃນປັດຈຸບັນມັນສາມາດປິດທັງຫມົດ
ສິ່ງທີ່ເປີດໃຊ້ງານ. ຕົວຢ່າງ, ວິທີດຽວທີ່ຈະຢຸດການດີບັກ, ເມື່ອເປີດໃຊ້ແລ້ວ, ແມ່ນເພື່ອ
ອອກຈາກຕັນປິດ; ດຽວນີ້ຖືກແກ້ໄຂແລ້ວ.
· "pack("D", $x)" ແລະ "pack("F", $x)" ໃນປັດຈຸບັນສູນ padding ໃນ x86 ຍາວ double builds.
ພາຍໃຕ້ບາງຕົວເລືອກການກໍ່ສ້າງໃນ GCC 4.8 ແລະຕໍ່ມາ, ພວກເຂົາເຄີຍຂຽນທັບສູນ.
padding ເລີ່ມຕົ້ນ, ຫຼືຂ້າມ buffer ເບື້ອງຕົ້ນທັງຫມົດ. ອັນນີ້ເຮັດໃຫ້ເກີດ op/pack.t
ລົ້ມເຫລວ. [perl #123971]
· ການຂະຫຍາຍ array cloned ຈາກກະທູ້ແມ່ສາມາດສົ່ງຜົນໃຫ້ "ການດັດແກ້ຂອງ a
ຄ່າອ່ານເທົ່ານັ້ນພະຍາຍາມ" ຂໍ້ຜິດພາດໃນເວລາທີ່ພະຍາຍາມດັດແປງອົງປະກອບໃຫມ່. [perl
#124127]
· ຄວາມລົ້ມເຫຼວຂອງການຢືນຢັນ ແລະເກີດອຸປະຕິເຫດກັບ "*x= "ໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl
#123790]
· ຂໍ້ບົກພ່ອງ crashing/looping ທີ່ເປັນໄປໄດ້ທີ່ກ່ຽວຂ້ອງກັບການລວບລວມ subs lexical ໄດ້ຖືກແກ້ໄຂແລ້ວ.
[perl #124099]
· UTF-8 ດຽວນີ້ເຮັດວຽກຢ່າງຖືກຕ້ອງໃນຊື່ຟັງຊັນ, ໃນ unquoted HERE-document terminators,
ແລະໃນຊື່ຕົວແປທີ່ໃຊ້ເປັນ array indexes. [perl #124113]
· ຊ້ຳແລ້ວຊ້ຳອີກການຈັບຄູ່ຮູບແບບທົ່ວໂລກໃນສະພາບສະເກັດທີ່ຢູ່ໃນສາຍທີ່ມີຮອຍເປື້ອນຂະໜາດໃຫຍ່
ຊ້າເລກກຳລັງໂດຍຂຶ້ນກັບຕຳແໜ່ງການຈັບຄູ່ປັດຈຸບັນໃນສະຕຣິງ. [perl
#123202]
· ການຂັດຂ້ອງຕ່າງໆອັນເນື່ອງມາຈາກ parser ໄດ້ຮັບຄວາມສັບສົນໂດຍຄວາມຜິດພາດ syntax ໄດ້ຖືກແກ້ໄຂແລ້ວ.
[perl #123801] [perl #123801]
[perl #123802]
[perl #123955]
· "ແຍກ" ໃນຂອບເຂດຂອງ lexical $_ ໄດ້ຖືກແກ້ໄຂບໍ່ໃຫ້ລົ້ມເຫລວໃນການຢືນຢັນ. [perl
#123763]
· syntax "my $x : attr" ພາຍໃນຕົວປະຕິບັດການລາຍຊື່ຕ່າງໆຈະບໍ່ລົ້ມເຫລວໃນການຢືນຢັນ. [perl
#123817]
· ເຊັນ "@" ໃນວົງຢືມຕາມດ້ວຍຕົວເລກທີ່ບໍ່ແມ່ນ ASCII (ເຊິ່ງບໍ່ແມ່ນຕົວລະບຸທີ່ຖືກຕ້ອງ)
ຈະເຮັດໃຫ້ parser ຂັດ, ແທນທີ່ຈະພຽງແຕ່ພະຍາຍາມ "@" ເປັນຕົວຫນັງສື. ນີ້
ໄດ້ຮັບການແກ້ໄຂ. [perl #123963]
· "*bar::=*foo::=*glob_with_hash" ໄດ້ crashing ນັບຕັ້ງແຕ່ Perl 5.14, ແຕ່ບໍ່ມີຕໍ່ໄປອີກແລ້ວ.
[perl #123847]
· "foreach" ໃນ scalar context ບໍ່ໄດ້ pushing ລາຍການໄປ stack, ຜົນໄດ້ຮັບ
ແມງໄມ້. ("ພິມ 4, scalar do { foreach(@x){} } + 1" ຈະພິມ 5.) ມັນໄດ້ຖືກແກ້ໄຂແລ້ວ.
ເພື່ອກັບຄືນ "undef". [perl #124004]
· ຫຼາຍໆກໍລະນີຂອງຂໍ້ມູນທີ່ໃຊ້ໃນການເກັບຮັກສາເນື້ອຫາຕົວແປສະພາບແວດລ້ອມໃນລະຫັດ C ຫຼັກ
ອາດຈະຖືກຂຽນທັບກ່ອນທີ່ຈະຖືກນໍາໃຊ້ໄດ້ຖືກແກ້ໄຂ. [perl #123748]
·ບາງຮູບແບບເລີ່ມຕົ້ນດ້ວຍ "/.*..../" ການຈັບຄູ່ກັບສາຍຍາວແມ່ນຊ້າ
ຕັ້ງແຕ່ v5.8, ແລະບາງຮູບແບບ "/.*..../i" ຊ້າຕັ້ງແຕ່ v5.18. ດຽວນີ້
ທັງຫມົດໄວອີກເທື່ອຫນຶ່ງ. [perl #123743] .
· ຄ່າທີ່ເຫັນໄດ້ເບື້ອງຕົ້ນຂອງ $/ ຕອນນີ້ຖືກຮັກສາໄວ້ເມື່ອມັນຖືກຕັ້ງເປັນຄ່າທີ່ບໍ່ຖືກຕ້ອງ.
ກ່ອນຫນ້ານີ້ຖ້າທ່ານກໍານົດ $ / ເພື່ອອ້າງອີງໃສ່ array, ຕົວຢ່າງ, perl ຈະຜະລິດ a
runtime ຜິດພາດແລະບໍ່ໄດ້ຕັ້ງ "PL_rs", ແຕ່ລະຫັດ Perl ທີ່ກວດສອບ $/ ຈະເບິ່ງ array ໄດ້.
ອ້າງອິງ. [perl #123218] .
· ໃນຮູບແບບການສະແດງອອກປົກກະຕິ, ຫ້ອງຮຽນ POSIX, ເຊັ່ນ "[:ascii:]", ຈະຕ້ອງຢູ່ໃນ a
ປະເພດຕົວອັກສອນແບບວົງເລັບ, ເຊັ່ນ "qr/[[:ascii:]]/". ການເຕືອນໄພແມ່ນອອກໃນເວລາທີ່ບາງສິ່ງບາງຢ່າງ
ເບິ່ງຄືວ່າຫ້ອງຮຽນ POSIX ບໍ່ແມ່ນຢູ່ໃນຫ້ອງຮຽນທີ່ມີວົງເລັບ. ການເຕືອນນັ້ນບໍ່ແມ່ນ
ໄດ້ຮັບການສ້າງຂື້ນເມື່ອຫ້ອງຮຽນ POSIX ຖືກປະຕິເສດ: "[:^ascii:]". ດຽວນີ້ຖືກແກ້ໄຂແລ້ວ.
· Perl 5.14.0 ນຳສະເໜີຂໍ້ຜິດພາດທີ່ "eval { LABEL: }" ຈະຂັດຂ້ອງ. ນີ້ໄດ້
ຄົງທີ່. [perl #123652] .
· ການຂັດຂ້ອງຕ່າງໆອັນເນື່ອງມາຈາກ parser ໄດ້ຮັບຄວາມສັບສົນໂດຍຄວາມຜິດພາດ syntax ໄດ້ຖືກແກ້ໄຂແລ້ວ.
[perl #123617] . [perl #123617]
. [perl #123737]
. [perl #123753]
.
· ລະຫັດເຊັ່ນ "/$a[/" ໃຊ້ເພື່ອອ່ານແຖວຕໍ່ໄປຂອງການປ້ອນຂໍ້ມູນ ແລະຖືວ່າມັນມາ
ທັນທີຫຼັງຈາກວົງເລັບເປີດ. ບາງລະຫັດບໍ່ຖືກຕ້ອງຕາມນັ້ນຈະ parse ແລະ
ແລ່ນ, ແຕ່ລະຫັດບາງອັນເຮັດໃຫ້ເກີດຄວາມຂັດຂ້ອງ, ດັ່ງນັ້ນຕອນນີ້ຈຶ່ງບໍ່ອະນຸຍາດ. [perl #123712]
.
·ແກ້ໄຂການໂຕ້ຖຽງ underflow ສໍາລັບ "pack". [perl #123874]
.
· ແກ້ໄຂການຈັດການ "\x{}" ທີ່ບໍ່ເຄັ່ງຄັດ. ດຽວນີ້ "\x{}" ເທົ່າກັບ "\x{0}" ແທນ
ຄວາມຜິດ.
· ໃນປັດຈຸບັນ "stat -t" ບໍ່ໄດ້ຖືກປະຕິບັດເປັນ stackable, ຄືກັນກັບ "-t stat". [perl #123816]
.
· ສິ່ງຕໍ່ໄປນີ້ບໍ່ເຮັດໃຫ້ເກີດ SEGV: "qr{x+(y(?0))*}".
· ແກ້ໄຂ loop infinite ໃນ parsing backrefs ໃນຮູບແບບ regexp.
· ການແກ້ໄຂຂໍ້ບົກພ່ອງເລັກນ້ອຍຫຼາຍຢ່າງໃນພຶດຕິກໍາຂອງ Infinity ແລະ NaN, ລວມທັງການເຕືອນເມື່ອ
stringifying Infinity-like ຫຼື NaN-like strings. ຕົວຢ່າງ, "NaNcy" ບໍ່ໄດ້ໃສ່ຕົວເລກ
NaN ອີກຕໍ່ໄປ.
· bug ໃນຮູບແບບການສະແດງອອກປົກກະຕິທີ່ສາມາດນໍາໄປສູ່ການ segfaults ແລະອຸປະຕິເຫດອື່ນໆ
ໄດ້ຮັບການແກ້ໄຂ. ນີ້ເກີດຂຶ້ນພຽງແຕ່ໃນຮູບແບບທີ່ລວບລວມດ້ວຍ "/i" ໃນຂະນະທີ່ປະຕິບັດ
ບັນຊີທ້ອງຖິ່ນ POSIX ປະຈຸບັນ (ເຊິ່ງປົກກະຕິແລ້ວຫມາຍຄວາມວ່າພວກເຂົາຕ້ອງຖືກລວບລວມພາຍໃນ
ຂອບເຂດຂອງ "ໃຊ້ທ້ອງຖິ່ນ"), ແລະຕ້ອງມີສະຕິງຢ່າງໜ້ອຍ 128 ຕິດຕໍ່ກັນ.
bytes ເພື່ອຈັບຄູ່. [perl #123539] .
· "s // / g" ໃນປັດຈຸບັນເຮັດວຽກຢູ່ໃນສາຍຍາວຫຼາຍ (ບ່ອນທີ່ມີຫຼາຍກ່ວາ 2 ຕື້
iterations) ແທນທີ່ຈະຕາຍດ້ວຍ 'Substitution loop'. [perl #103260]
. [perl #103260]
.
· "gmtime" ບໍ່ຂັດກັບຄ່າທີ່ບໍ່ແມ່ນຕົວເລກອີກຕໍ່ໄປ. [perl #123495]
.
· "\()" (ການອ້າງອີງເຖິງບັນຊີລາຍການຫວ່າງເປົ່າ), ແລະ "y///" ກັບ lexical $_ ໃນຂອບເຂດ, ສາມາດທັງສອງໄດ້
ຂຽນບໍ່ດີຜ່ານມາໃນຕອນທ້າຍຂອງ stack ໄດ້. ພວກເຂົາທັງສອງໄດ້ຖືກແກ້ໄຂເພື່ອຂະຫຍາຍ
stack ທໍາອິດ.
· "prototype()" ໂດຍບໍ່ມີການໂຕ້ຖຽງນໍາໃຊ້ເພື່ອອ່ານລາຍການທີ່ຜ່ານມາໃນ stack ໄດ້, ສະນັ້ນ
"ພິມ "foo", prototype()" ຈະພິມຕົ້ນແບບຂອງ foo. ມັນໄດ້ຖືກແກ້ໄຂເພື່ອ infer $_
ແທນ. [perl #123514] .
·ບາງກໍລະນີຂອງ subs ລັດ lexical ປະກາດພາຍໃນ subs predeclared ສາມາດ crash, ສໍາລັບ
ຕົວຢ່າງເມື່ອປະເມີນ string ລວມທັງຊື່ຂອງຕົວແປພາຍນອກ, ແຕ່ບໍ່ມີຕໍ່ໄປອີກແລ້ວ
ເຮັດແນວໃດ.
·ບາງກໍລະນີຂອງ subs ລັດ lexical nested ພາຍໃນ subs ທີ່ບໍ່ເປີດເຜີຍຊື່ສາມາດເຮັດໃຫ້ 'Bizarre.
copy' ຂໍ້ຜິດພາດຫຼືອາດຈະຂັດຂ້ອງ.
· ໃນເວລາທີ່ພະຍາຍາມທີ່ຈະປ່ອຍຄໍາເຕືອນ, perl ຂອງດີບັກເລີ່ມຕົ້ນ (perl5db.pl) ແມ່ນບາງຄັ້ງ
ໃຫ້ 'routine ຍ່ອຍທີ່ບໍ່ໄດ້ກໍານົດ &DB::db_warn ເອີ້ນວ່າ' ແທນ. bug ນີ້, ເຊິ່ງໄດ້ເລີ່ມຕົ້ນທີ່ຈະ
ເກີດຂຶ້ນໃນ Perl 5.18, ໄດ້ຮັບການແກ້ໄຂ. [perl #123553]
.
· ຂໍ້ຜິດພາດທາງໄວຍະກອນບາງຢ່າງໃນການປ່ຽນແທນ, ເຊັ່ນ "s/${<>{})//", ຈະຂັດຂ້ອງ, ແລະມີ
ເຮັດໄດ້ຕັ້ງແຕ່ Perl 5.10. (ໃນບາງກໍລະນີອຸປະຕິເຫດບໍ່ໄດ້ເກີດຂຶ້ນຈົນກ່ວາ 5.16.)
ແນ່ນອນ, ອຸປະຕິເຫດໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl #123542]
.
·ແກ້ໄຂຄູ່ນ່ຶຂອງຊ່ອຍແນ່ການຂະຫຍາຍຕົວການຄິດໄລ່ overflows; ໂດຍສະເພາະ, ຊ້ຳ
ການສະແດງອອກເຊັ່ນ "33 x ~ 3" ສາມາດເຮັດໃຫ້ເກີດການລົ້ນ buffer ຂະຫນາດໃຫຍ່ນັບຕັ້ງແຕ່ຜົນຜະລິດໃຫມ່
ຂະໜາດບັຟເຟີບໍ່ໄດ້ຖືກຈັດການຢ່າງຖືກຕ້ອງໂດຍ "SvGROW()". ການສະແດງອອກເຊັ່ນນີ້ໃນປັດຈຸບັນ
ຢ່າງຖືກຕ້ອງເຮັດໃຫ້ຄວາມແປກໃຈຫໍ່ຄວາມຊົງຈໍາ. [perl #123554]
.
· "formline("@...", "a");" ຈະ crash. ກໍລະນີ "FF_CHECKNL" ໃນ "pp_formline()" ບໍ່ແມ່ນ
ກໍານົດຕົວຊີ້ທີ່ໃຊ້ເພື່ອຫມາຍຕໍາແໜ່ງຟັກ, ເຊິ່ງນໍາໄປສູ່ກໍລະນີ "FF_MORE".
crashing ກັບຄວາມຜິດ segmentation. ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl #123538]
.
· buffer overrun ແລະ crash ທີ່ເປັນໄປໄດ້ໃນເວລາທີ່ parsing ຮູບແບບຕົວຫນັງສືໃນລະຫວ່າງປົກກະຕິ
ການລວບລວມການສະແດງອອກໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl #123604]
.
· "fchmod()" ແລະ "futimes()" ຕອນນີ້ຕັ້ງ $! ເມື່ອພວກເຂົາລົ້ມເຫລວເນື່ອງຈາກຖືກຜ່ານໄຟລ໌ທີ່ປິດ
ຈັບ. [perl #122703] .
· "op_free()" ແລະ "scalarvoid()" ບໍ່ຂັດຂ້ອງອີກຕໍ່ໄປເນື່ອງຈາກມີ stack overflow ເມື່ອປ່ອຍຕົວອອກ.
ເປັນໄມ້ຢືນຕົ້ນ op recursive ເລິກ. [perl #108276]
.
· ໃນ Perl 5.20.0, $^N ບັງເອີນມີທຸງ UTF-8 ພາຍໃນປິດຖ້າເຂົ້າເຖິງ
ຈາກບລັອກລະຫັດພາຍໃນການສະແດງຜົນປົກກະຕິ, ປະສິດທິຜົນ UTF-8-ການເຂົ້າລະຫັດຄ່າ.
ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl #123135]
.
·ການໂທ "semctl" ທີ່ລົ້ມເຫລວຈະບໍ່ຂຽນທັບລາຍການທີ່ມີຢູ່ແລ້ວໃນ stack, ຊຶ່ງຫມາຍຄວາມວ່າ
ວ່າ "(semctl(-1,0,0,0))[0]" ບໍ່ໃຫ້ຄໍາເຕືອນ "unitialized" ອີກຕໍ່ໄປ.
· "else{foo()}" ທີ່ບໍ່ມີບ່ອນຫວ່າງກ່ອນ "foo" ແມ່ນດີກວ່າໃນການກໍານົດເສັ້ນທີ່ຖືກຕ້ອງ.
ຈໍານວນຂອງຄໍາຖະແຫຼງການນັ້ນ. [perl #122695]
.
·ບາງຄັ້ງການມອບຫມາຍໃນ "@array = split" ໄດ້ຮັບການ optimized ດັ່ງນັ້ນ "split" ຕົວຂອງມັນເອງ
ຂຽນໂດຍກົງໃສ່ array. ອັນນີ້ເຮັດໃຫ້ເກີດຂໍ້ຜິດພາດ, ປ້ອງກັນການມອບໝາຍນີ້
ຖືກໃຊ້ໃນບໍລິບົດມູນຄ່າ. ດັ່ງນັ້ນ "(@a=split//,"foo")=bar()" ເປັນຂໍ້ຜິດພາດ. (ບັກນີ້
ອາດຈະກັບຄືນໄປຫາ Perl 3, ເມື່ອການເພີ່ມປະສິດທິພາບໄດ້ຖືກເພີ່ມ.) ຕອນນີ້ມັນຖືກແກ້ໄຂແລ້ວ.
[perl #123057] .
· ເມື່ອລາຍຊື່ການໂຕ້ຖຽງລົ້ມເຫລວ ການກວດສອບທີ່ລະບຸໄວ້ໂດຍລາຍເຊັນຍ່ອຍ (ເຊິ່ງແມ່ນ
ຍັງເປັນລັກສະນະທົດລອງ), ຂໍ້ຄວາມຄວາມຜິດພາດທີ່ຜົນໄດ້ຮັບໃນປັດຈຸບັນໃຫ້ໄຟລ໌ແລະ
ໝາຍເລກສາຍຂອງຜູ້ໂທ, ບໍ່ແມ່ນຂອງລາຍການຍ່ອຍທີ່ເອີ້ນວ່າ. [perl #121374]
.
· ໂຕປະຕິບັດການ flip-flop (".." ແລະ "..." ໃນບໍລິບົດການສະເກັດແລ) ໃຊ້ເພື່ອຮັກສາແຍກຕ່າງຫາກ.
ສະຖານະສໍາລັບແຕ່ລະລະດັບ recursion (ຈໍານວນຂອງເວລາ sub enclosing ເອີ້ນວ່າ
recursively), ກົງກັນຂ້າມກັບເອກະສານ. ໃນປັດຈຸບັນການປິດແຕ່ລະມີລັດພາຍໃນຫນຶ່ງ
ສໍາລັບແຕ່ລະ flip-flop. [perl #122829]
.
· ຕົວປະຕິບັດການ flip-flop ( ". " ໃນບໍລິບົດ scalar) ຈະສົ່ງຄືນ scalar ດຽວກັນແຕ່ລະອັນ.
ທີ່ໃຊ້ເວລາ, ເວັ້ນເສຍແຕ່ວ່າ subroutine ປະກອບມີເອີ້ນວ່າ recursively. ໃນປັດຈຸບັນມັນສະເຫມີກັບຄືນມາ
ຕາຕະລາງໃຫມ່. [perl #122829] .
· "ໃຊ້", "ບໍ່", ປ້າຍຄໍາຖະແຫຼງ, ຕັນພິເສດ ("BEGIN") ແລະຝັກແມ່ນອະນຸຍາດໃຫ້ເປັນ
ສິ່ງທໍາອິດໃນ "ແຜນທີ່" ຫຼື "grep", ຕັນຫຼັງຈາກ "ພິມ" ຫຼື "ເວົ້າ" (ຫຼືອື່ນໆ.
functions) ກັບຄືນຕົວຈັບ, ແລະພາຍໃນ "${...}", "@{...}", ແລະອື່ນໆ. [perl #122782]
.
· ຕອນນີ້ຕົວປະຕິບັດການຄ້າງຫ້ອງ "x" ຂະຫຍາຍບໍລິບົດ lvalue ໄປສູ່ການໂຕ້ແຍ້ງຊ້າຍຂອງມັນ
ເມື່ອໃຊ້ໃນສະພາບການເຊັ່ນ "foreach". ທີ່ອະນຸຍາດໃຫ້ "for(($#that_array)x2) { ... }" ເປັນ
ເຮັດວຽກຕາມທີ່ຄາດໄວ້ ຖ້າ loop ປ່ຽນແປງ $_.
· "(...) x ... " ໃນ scalar context ໃຊ້ເພື່ອທໍາລາຍ stack ຖ້າຫາກວ່າຫນຶ່ງ operand ເປັນວັດຖຸ.
ດ້ວຍການໂຫຼດ "x" ເກີນ, ເຮັດໃຫ້ເກີດພຶດຕິກໍາທີ່ຜິດພາດ. [perl #121827]
.
· ການມອບຫມາຍໃຫ້ scalar lexical ມັກຈະຖືກປັບປຸງໃຫ້ດີທີ່ສຸດ; ຕົວຢ່າງໃນ "$x ຂອງຂ້ອຍ; $x = $ y
+ $z", ຄຳສັ່ງມອບໝາຍຖືກປັບໃຫ້ເໝາະສົມອອກໄປ ແລະຕົວດຳເນີນການເພີ່ມຈະຂຽນຜົນຂອງມັນ
ໂດຍກົງຫາ $x. ແມງໄມ້ຕ່າງໆທີ່ກ່ຽວຂ້ອງກັບການເພີ່ມປະສິດທິພາບນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ. ແນ່ນອນ
ຜູ້ປະກອບການດ້ານຂວາມືບາງຄັ້ງບໍ່ສາມາດກໍານົດຄ່າທັງຫມົດຫຼື
ກໍານົດຄ່າທີ່ບໍ່ຖືກຕ້ອງ, ຫຼືຈະໂທຫາ STORE ສອງຄັ້ງຫຼືບໍ່ຢູ່ໃນຕົວແປທີ່ຜູກມັດ.
ໂຕດຳເນີນການທີ່ໄດ້ຮັບຜົນກະທົບແມ່ນ "$foo++", "$foo--", ແລະ "-$foo" ພາຍໃຕ້ "use integer",
"chomp", "chr" ແລະ "setpgrp".
· ບາງຄັ້ງການມອບໝາຍລາຍຊື່ແມ່ນ buggy ຖ້າຫາກວ່າ scalar ດຽວກັນສິ້ນສຸດລົງເຖິງທັງສອງດ້ານຂອງ
ການມອບຫມາຍເນື່ອງຈາກການນໍາໃຊ້ "tied", "ຄຸນຄ່າ" ຫຼື "ແຕ່ລະ". ຜົນໄດ້ຮັບຈະຜິດພາດ
ມູນຄ່າທີ່ໄດ້ຮັບມອບຫມາຍ.
· "setpgrp($nonzero)" (ມີການໂຕ້ຖຽງຫນຶ່ງ) ຖືກປ່ຽນໂດຍບັງເອີນໃນ 5.16 ເພື່ອຫມາຍຄວາມວ່າ
setpgrp(0). ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ.
· "__SUB__" ສາມາດສົ່ງຄືນຄ່າທີ່ບໍ່ຖືກຕ້ອງ ຫຼືແມ້ກະທັ້ງຄວາມຈຳເສຍຫາຍພາຍໃຕ້ຕົວດີບັກ (the
"-d" switch) ແລະໃນຍ່ອຍທີ່ມີ "eval $string".
· ເມື່ອ "sub () { $var }" ກາຍເປັນ inlinable, ດຽວນີ້ມັນຈະຕອບຄ່າສະເກັດເງິນທີ່ແຕກຕ່າງກັນໃນແຕ່ລະຄັ້ງ,
ຄືກັນກັບການຍ່ອຍທີ່ບໍ່ແມ່ນ inlinable, ເຖິງແມ່ນວ່າ Perl ຍັງເພີ່ມປະສິດທິພາບການສໍາເນົາທັນທີໃນກໍລະນີ
ບ່ອນທີ່ມັນຈະບໍ່ມີຄວາມແຕກຕ່າງທີ່ສັງເກດເຫັນ.
· "ການຍ່ອຍຂອງຂ້ອຍ f () { $var }" ແລະ "sub (): attr { $var }" ແມ່ນບໍ່ມີສິດສໍາລັບ
inlining. ອະດີດຈະ crash; ສຸດທ້າຍພຽງແຕ່ຈະຖິ້ມຄຸນລັກສະນະອອກໄປ.
ມີຂໍ້ຍົກເວັ້ນສໍາລັບຄຸນລັກສະນະ ":method" ທີ່ຮູ້ຈັກໜ້ອຍ, ເຊິ່ງບໍ່ມີຫຍັງເລີຍ
ຫຼາຍ.
· ການຈັດແຖວຍ່ອຍດ້ວຍຕົ້ນແບບຫວ່າງເປົ່າແມ່ນມີຄວາມສອດຄ່ອງຫຼາຍກວ່າແຕ່ກ່ອນ.
ກ່ອນຫນ້ານີ້, ຍ່ອຍທີ່ມີຫຼາຍຄໍາຖະແຫຼງການ, ເຊິ່ງທັງຫມົດແຕ່ສຸດທ້າຍໄດ້ຖືກປັບປຸງໃຫ້ດີທີ່ສຸດ
ໄປ, ຈະ inlinable ໄດ້ພຽງແຕ່ຖ້າວ່າມັນເປັນຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່ທີ່ມີສາຍ "eval"
ຫຼືການປະກາດ "ລັດ" ຫຼືປິດຕົວແປພາຍນອກ (ຫຼືຍ່ອຍທີ່ບໍ່ເປີດເຜີຍຊື່.
ພາຍໃຕ້ debugger). ດຽວນີ້ຍ່ອຍໃດນຶ່ງທີ່ຈະຖືກພັບເປັນຄ່າຄົງທີ່ດຽວຫຼັງຈາກ
ຖະແຫຼງການໄດ້ຖືກປັບປຸງໃຫ້ດີທີ່ສຸດແມ່ນມີສິດສໍາລັບການ inlining. ນີ້ໃຊ້ກັບສິ່ງຕ່າງໆ
ເຊັ່ນ "sub () { jabber() ຖ້າ DEBUG; 42 }".
ລະບຽບການຍ່ອຍບາງຢ່າງທີ່ມີ "ການກັບຄືນ" ຢ່າງຊັດເຈນໄດ້ຖືກເຮັດໃຫ້ inlinable, ກົງກັນຂ້າມກັບ
ເອກະສານ, ໃນປັດຈຸບັນ "ກັບຄືນ" ສະເຫມີປ້ອງກັນບໍ່ໃຫ້ inlining.
· ໃນບາງລະບົບ, ເຊັ່ນ VMS, "crypt" ສາມາດສົ່ງຄືນສະຕຣິງທີ່ບໍ່ແມ່ນ ASCII. ຖ້າເປັນ scalar
ຖືກມອບຫມາຍໃຫ້ມີ UTF-8 string ກ່ອນຫນ້ານີ້, ຫຼັງຈາກນັ້ນ "crypt" ຈະບໍ່ປິດ
ທຸງ UTF-8, ດັ່ງນັ້ນຄວາມເສຍຫາຍຂອງມູນຄ່າກັບຄືນ. ນີ້ຈະເກີດຂຶ້ນກັບ
"$lexical = crypt...".
· "crypt" ຈະບໍ່ໂທຫາ "FETCH" ສອງຄັ້ງໃນການໂຕ້ຖຽງທໍາອິດທີ່ຜູກມັດ.
· unterminated here-doc ຢູ່ໃນແຖວສຸດທ້າຍຂອງຕົວປະຕິບັດການທີ່ຄ້າຍຄື quote ("qq[${<
"/(?{ <
· "index()" ແລະ "rindex()" ບໍ່ຂັດຂ້ອງອີກຕໍ່ໄປເມື່ອໃຊ້ໃນສາຍທີ່ມີຂະໜາດເກີນ 2GB. [perl
#121562] .
· ຂະໜາດນ້ອຍ, ຄວາມຕັ້ງໃຈໃນເມື່ອກ່ອນ, ຄວາມຊົງຈຳຮົ່ວໃນ "PERL_SYS_INIT"/"PERL_SYS_INIT3" ໃນ
ການກໍ່ສ້າງ Win32 ຖືກແກ້ໄຂແລ້ວ. ນີ້ອາດຈະສົ່ງຜົນກະທົບຕໍ່ຜູ້ຝັງທີ່ສ້າງແລະທໍາລາຍຊ້ໍາຊ້ອນ
ເຄື່ອງຈັກ perl ພາຍໃນຂະບວນການດຽວກັນ.
· "POSIX::localeconv()" ຕອນນີ້ສົ່ງຄືນຂໍ້ມູນສໍາລັບທ້ອງຖິ່ນທີ່ຢູ່ເບື້ອງຕົ້ນຂອງໂຄງການເຖິງແມ່ນວ່າ
ເມື່ອຖືກເອີ້ນຈາກນອກຂອບເຂດຂອງ "ໃຊ້ທ້ອງຖິ່ນ".
· "POSIX::localeconv()" ດຽວນີ້ເຮັດວຽກຢ່າງຖືກຕ້ອງໃນເວທີທີ່ບໍ່ມີ "LC_NUMERIC"
ແລະ/ຫຼື "LC_MONETARY", ຫຼືສໍາລັບການທີ່ Perl ໄດ້ຖືກລວບລວມເພື່ອບໍ່ສົນໃຈຫຼືທັງສອງ.
ຂອງປະເພດທ້ອງຖິ່ນເຫຼົ່ານີ້. ໃນສະຖານະການດັ່ງກ່າວ, ໃນປັດຈຸບັນບໍ່ມີລາຍການສໍາລັບການ
ຄ່າທີ່ສອດຄ້ອງກັນໃນ hash ທີ່ສົ່ງຄືນໂດຍ "localeconv()".
· "POSIX::localeconv()" ຕອນນີ້ໝາຍຄວາມເໝາະສົມກັບຄ່າທີ່ມັນກັບຄືນມາເປັນ UTF-8 ຫຼືບໍ່.
ກ່ອນຫນ້ານີ້ພວກເຂົາຖືກສົ່ງຄືນສະເຫມີເປັນ bytes, ເຖິງແມ່ນວ່າພວກເຂົາຄວນຈະເປັນ
ເຂົ້າລະຫັດເປັນ UTF-8.
· ໃນ Microsoft Windows, ຢູ່ໃນຂອບເຂດຂອງ "ໃຊ້ສະຖານທີ່", ມີຕົວອັກສອນ POSIX ຕໍ່ໄປນີ້
ຫ້ອງຮຽນໄດ້ໃຫ້ຜົນໄດ້ຮັບສໍາລັບຫຼາຍທ້ອງຖິ່ນທີ່ບໍ່ສອດຄ່ອງກັບມາດຕະຖານ POSIX:
"[[:alnum:]]", "[[:alpha:]]", "[[:blank:]]", "[[:digit:]]", "[[:graph:]]",
"[[:lower:]]", "[[:print:]]", "[[:punct:]]", "[[:upper:]]", "[[:word:]]", ແລະ
"[[:xdigit:]]". ນີ້ແມ່ນຍ້ອນວ່າການຈັດຕັ້ງປະຕິບັດ Microsoft ເບື້ອງຕົ້ນບໍ່ໄດ້
ປະຕິບັດຕາມມາດຕະຖານ. ດຽວນີ້ Perl ໃຊ້ຄວາມລະມັດລະວັງເປັນພິເສດເພື່ອແກ້ໄຂສິ່ງນີ້.
· ບັນຫາຫຼາຍຢ່າງໄດ້ຖືກກວດພົບໂດຍ Coverityhttp://www.coverity.com/> ແລະແກ້ໄຂ.
· "ລະບົບ()" ແລະເພື່ອນໆຄວນເຮັດວຽກຢ່າງຖືກຕ້ອງໃນການກໍ່ສ້າງ Android ຫຼາຍ.
ເນື່ອງຈາກການກວດສອບ, ມູນຄ່າທີ່ລະບຸຜ່ານ "-Dtargetsh" ກັບ ກໍາຫນົດຄ່າ ຈະສິ້ນສຸດ
ເຖິງຈະຖືກລະເລີຍໂດຍບາງຂະບວນການກໍ່ສ້າງ. ນີ້ເຮັດໃຫ້ເກີດ perls cross-compiled ສໍາລັບ
Android ທີ່ຈະສິ້ນສຸດກັບສະບັບທີ່ບົກຜ່ອງຂອງ "ລະບົບ ()", "exec()" ແລະ backticks: ໄດ້.
ຄໍາສັ່ງຈະສິ້ນສຸດການຊອກຫາ "/ ຖັງ / sh" ແທນ "/system/bin/sh", ແລະດັ່ງນັ້ນ
ລົ້ມເຫລວສໍາລັບສ່ວນໃຫຍ່ຂອງອຸປະກອນ, ຊຶ່ງເຮັດໃຫ້ $! ເປັນ "ENOENT".
· "qr(...\(...\)...)", "qr[...\[...\]...]", ແລະ "qr{...\{.. .\}...}" ດຽວນີ້ເຮັດວຽກ.
ກ່ອນຫນ້ານີ້ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະຫນີສາມຕົວອັກສອນຊ້າຍທີ່ມີ backslash
ພາຍໃນຮູບແບບການສະແດງອອກປົກກະຕິ ຖ້າບໍ່ດັ່ງນັ້ນເຂົາເຈົ້າຈະຖືກພິຈາລະນາ
metacharacters, ແລະຕົວກໍານົດການເປີດຮູບແບບແມ່ນລັກສະນະ, ແລະປິດ
ຕົວຂັ້ນແມ່ນລັກສະນະກະຈົກຂອງມັນ.
· "s///e" ຢູ່ໃນສາຍ UTF-8 tainted ເສຍຫາຍ "pos()". ແມງໄມ້ນີ້, ນໍາສະເຫນີໃນ 5.20, ແມ່ນ
ຕອນນີ້ແກ້ໄຂແລ້ວ. [perl #122148] .
· ຂອບເຂດທີ່ບໍ່ແມ່ນຄຳສັບໃນສຳນວນປົກກະຕິ ("\B") ບໍ່ກົງກັບຈຸດສິ້ນສຸດຂອງຄຳສັບສະເໝີໄປ
ຊ່ອຍແນ່; ໂດຍສະເພາະ "q{} =~ /\B/" ບໍ່ກົງກັນ. ບັກນີ້, ແນະນໍາໃນ perl 5.14,
ດຽວນີ້ຖືກແກ້ໄຂແລ້ວ. [perl #122090] .
· "" P" =~ /(?=.*P)P/" ຄວນກົງກັນ, ແຕ່ບໍ່ແມ່ນ. ດຽວນີ້ຖືກແກ້ໄຂແລ້ວ. [perl #122171]
.
· ການບໍ່ລວບລວມ "ໃຊ້ Foo" ໃນ "eval" ສາມາດປ່ອຍໃຫ້ເປັນ "BEGIN" subroutine spurious
ຄໍານິຍາມ, ເຊິ່ງຈະຜະລິດຄໍາເຕືອນ "Subroutine BEGIN redefined" ໃນການນໍາໃຊ້ຕໍ່ໄປ
ຂອງ "ໃຊ້", ຫຼື "BEGIN" ບລັອກອື່ນໆ. [perl #122107]
.
· "method { BLOCK } ARGS" syntax ດຽວນີ້ວິເຄາະອາກິວເມັນຢ່າງຖືກຕ້ອງຖ້າພວກເຂົາເລີ່ມຕົ້ນດ້ວຍ
ວົງເລັບເປີດ. [perl #46947] .
·ຫ້ອງສະຫມຸດພາຍນອກແລະ Perl ອາດຈະມີແນວຄວາມຄິດທີ່ແຕກຕ່າງກັນຂອງທ້ອງຖິ່ນແມ່ນຫຍັງ. ນີ້ແມ່ນ
ມີບັນຫາໃນເວລາທີ່ການວິເຄາະສະຕຣິງສະບັບຖ້າຫາກວ່າຕົວແຍກຕົວເລກຂອງທ້ອງຖິ່ນໄດ້
ປ່ຽນແປງ. ການແຍກວິເຄາະສະບັບໄດ້ຖືກແກ້ໄຂເພື່ອຮັບປະກັນວ່າມັນຈັດການກັບທ້ອງຖິ່ນຢ່າງຖືກຕ້ອງ.
[perl #121930] .
· bug ໄດ້ຖືກແກ້ໄຂແລ້ວບ່ອນທີ່ການຢືນຢັນຄວາມຍາວສູນແລະລະຫັດບລັອກພາຍໃນ regex
ສາມາດເຮັດໃຫ້ "pos" ເຫັນຄ່າທີ່ບໍ່ຖືກຕ້ອງ. [perl #122460]
.
· ການອ້າງອີງຄ່າຄົງທີ່ໃນປັດຈຸບັນເຮັດວຽກຢ່າງຖືກຕ້ອງສໍາລັບຄ່າຄົງທີ່ຂອງ typeglob. ກ່ອນໜ້ານີ້
glob ໄດ້ stringified ແລະຊື່ຂອງມັນເບິ່ງຂຶ້ນ. ໃນປັດຈຸບັນ glob ຕົວຂອງມັນເອງຖືກນໍາໃຊ້. [perl
#69456]
· ເມື່ອວິເຄາະ sigil ("$" "@" "%" "&)" ຕາມດ້ວຍວົງເລັບ, parser ຈະບໍ່ພະຍາຍາມອີກຕໍ່ໄປ
ການຄາດເດົາວ່າມັນເປັນ block ຫຼື hash constructor (ເຮັດໃຫ້ເກີດຄວາມຜິດພາດ syntax ເມື່ອມັນ.
ຄາດເດົາອັນສຸດທ້າຍ), ເພາະວ່າມັນສາມາດເປັນຕັນເທົ່ານັ້ນ.
· "undef $reference" ດຽວນີ້ປ່ອຍຕົວອ້າງອີງທັນທີ, ແທນທີ່ຈະຕິດຢູ່ກັບມັນ
ຈົນກ່ວາຖະແຫຼງການຕໍ່ໄປ. [perl #122556]
·ກໍລະນີຕ່າງໆທີ່ຊື່ຂອງການຍ່ອຍໄດ້ຖືກນໍາໃຊ້ (autoload, overloading, ຂໍ້ຄວາມຜິດພາດ)
ຖືກນໍາໃຊ້ເພື່ອ crash ສໍາລັບ subs lexical, ແຕ່ໄດ້ຮັບການແກ້ໄຂ.
· ການຊອກຫາ bareword ໃນປັດຈຸບັນພະຍາຍາມເພື່ອຫຼີກເວັ້ນການຫຸ້ມຫໍ່ vivifying ຖ້າຫາກວ່າມັນ turns ອອກ bareword ແມ່ນ
ຈະບໍ່ເປັນຊື່ຍ່ອຍ.
· ການລວບລວມຄ່າຄົງທີ່ທີ່ບໍ່ເປີດເຜີຍຊື່ (ຕົວຢ່າງ:, "sub () { 3 }") ບໍ່ລຶບໃດໆ
ໂປຣເຈັກຍ່ອຍຊື່ "__ANON__" ໃນຊຸດປັດຈຸບັນ. ບໍ່ພຽງແຕ່ "*__ANON__{CODE}" ເທົ່ານັ້ນ
ຖືກລຶບລ້າງ, ແຕ່ຍັງມີຄວາມຊົງຈໍາຮົ່ວໄຫຼ. ບັກນີ້ກັບຄືນໄປຫາ Perl 5.8.0.
· ປະກາດ stub ເຊັ່ນ "sub f;" ແລະ "sub f ();" ບໍ່ມີຕໍ່ໄປອີກແລ້ວເຊັດອອກຄົງທີ່ຂອງ
ຊື່ດຽວກັນປະກາດໂດຍ "ໃຊ້ຄົງທີ່". ບັກນີ້ຖືກແນະນຳໃນ Perl 5.10.0.
· "qr/[\N{named sequence}]/" ດຽວນີ້ເຮັດວຽກຢ່າງຖືກຕ້ອງໃນຫຼາຍໆຕົວຢ່າງ.
ບາງຊື່ທີ່ຮູ້ຈັກກັບ "\N{...}" ຫມາຍເຖິງລໍາດັບຂອງຕົວອັກສອນຫຼາຍອັນ, ແທນທີ່ຈະເປັນ
ລັກສະນະດຽວປົກກະຕິ. ໂດຍທົ່ວໄປແລ້ວ ຫ້ອງຮຽນຕົວອັກສອນທີ່ໝາຍວົງເລັບກົງກັນສະເພາະຕົວດ່ຽວ
ຕົວອັກສອນ, ແຕ່ໃນປັດຈຸບັນການຈັດການພິເສດໄດ້ຖືກເພີ່ມເພື່ອໃຫ້ພວກເຂົາສາມາດຈັບຄູ່ກັບຊື່
sequences, ແຕ່ບໍ່ແມ່ນຖ້າ class ຖືກ inverted ຫຼືລໍາດັບຖືກລະບຸເປັນ
ຈຸດເລີ່ມຕົ້ນ ຫຼືຈຸດສິ້ນສຸດຂອງໄລຍະໃດໜຶ່ງ. ໃນກໍລະນີເຫຼົ່ານີ້, ການປ່ຽນແປງພຶດຕິກໍາພຽງແຕ່ຈາກກ່ອນແມ່ນ
rewording ເລັກນ້ອຍຂອງຂໍ້ຄວາມຄວາມຜິດພາດທີ່ຮ້າຍແຮງທີ່ໃຫ້ໃນເວລາທີ່ຫ້ອງຮຽນນີ້ແມ່ນສ່ວນຫນຶ່ງຂອງ a
"?[...])" ກໍ່ສ້າງ. ໃນເວລາທີ່ "[...]" ຢືນຢູ່ຄົນດຽວ, ການເຕືອນໄພທີ່ບໍ່ເປັນອັນຕະລາຍດຽວກັນກັບ
ກ່ອນທີ່ຈະຖືກຍົກຂຶ້ນມາ, ແລະພຽງແຕ່ລັກສະນະທໍາອິດໃນລໍາດັບຖືກນໍາໃຊ້, ອີກເທື່ອຫນຶ່ງຄືກັນກັບ
ກ່ອນ.
· ຄົງທີ່ທີ່ເສື່ອມເສຍທີ່ປະເມີນໃນເວລາລວບລວມຈະບໍ່ເຮັດໃຫ້ເກີດການຖະແຫຼງທີ່ບໍ່ກ່ຽວຂ້ອງອີກຕໍ່ໄປ
ກາຍເປັນ tainted. [perl #122669]
· "ເປີດ $$fh, ... ", ເຊິ່ງເຮັດໃຫ້ການຈັບຄູ່ທີ່ມີຊື່ຄ້າຍຄື "main::_GEN_0", ບໍ່ແມ່ນ.
ໃຫ້ການຈັດການການນັບອ້າງອີງທີ່ຖືກຕ້ອງ, ດັ່ງນັ້ນການຟຣີສອງເທົ່າສາມາດເກີດຂຶ້ນໄດ້.
· ໃນເວລາທີ່ຕັດສິນໃຈວ່າ bareword ເປັນຊື່ວິທີການ, parser ຈະໄດ້ຮັບຄວາມສັບສົນຖ້າຫາກວ່າ an
"ຂອງພວກເຮົາ" ຍ່ອຍທີ່ມີຊື່ດຽວກັນທີ່ມີຢູ່ແລ້ວ, ແລະຊອກຫາວິທີການຢູ່ໃນຊຸດຂອງ
"ຂອງພວກເຮົາ", ແທນທີ່ຈະເປັນຊຸດຂອງຜູ້ຮ້ອງຂໍ.
· parser ຈະບໍ່ສັບສົນໂດຍ "\U=" ພາຍໃນສະຕຣິງທີ່ອ້າງອີງສອງເທົ່າ. ມັນເຄີຍ
ຜະລິດ syntax ຜິດພາດ, ແຕ່ຕອນນີ້ລວບລວມມັນຢ່າງຖືກຕ້ອງ. [perl #80368]
·ມັນມີຄວາມຕັ້ງໃຈສະເຫມີສໍາລັບຜູ້ປະຕິບັດການທົດສອບໄຟລ໌ "-B" ແລະ "-T" ເພື່ອປິ່ນປົວ
UTF-8 ເຂົ້າລະຫັດໄຟລ໌ເປັນຂໍ້ຄວາມ. (perlfunc ໄດ້ຖືກປັບປຸງເພື່ອເວົ້ານີ້.) ກ່ອນຫນ້ານີ້, ມັນ
ເປັນໄປໄດ້ສໍາລັບບາງໄຟລ໌ທີ່ຈະຖືກພິຈາລະນາ UTF-8 ທີ່ຕົວຈິງແລ້ວບໍ່ແມ່ນ UTF-8 ທີ່ຖືກຕ້ອງ.
ດຽວນີ້ຖືກແກ້ໄຂແລ້ວ. ໃນປັດຈຸບັນຜູ້ປະກອບການເຮັດວຽກຢູ່ໃນເວທີ EBCDIC ເຊັ່ນກັນ.
· ພາຍໃຕ້ບາງເງື່ອນໄຂຂໍ້ຄວາມເຕືອນໄພຍົກຂຶ້ນມາໃນລະຫວ່າງຮູບແບບການສະແດງອອກປົກກະຕິ
ການລວບລວມແມ່ນໄດ້ຮັບຜົນຜະລິດຫຼາຍກວ່າຫນຶ່ງຄັ້ງ. ນີ້ໄດ້ຖືກແກ້ໄຂໃນປັດຈຸບັນ.
· Perl 5.20.0 ແນະນໍາການຖົດຖອຍທີ່ UTF-8 ເຂົ້າລະຫັດການສະແດງອອກປົກກະຕິ
ຮູບແບບທີ່ມີຕົວພິມນ້ອຍ ASCII ໂຕດຽວບໍ່ກົງກັບຕົວພິມໃຫຍ່ຂອງມັນ
ຄູ່ຮ່ວມ. ທີ່ໄດ້ຖືກແກ້ໄຂໃນທັງ 5.20.1 ແລະ 5.22.0. [perl #122655]
· ການພັບແບບຄົງທີ່ສາມາດສະກັດກັ້ນການເຕືອນທີ່ບໍ່ຖືກຕ້ອງໄດ້ຖ້າຫາກວ່າຄໍາເຕືອນ lexical ("ໃຊ້
ຄໍາເຕືອນ" ຫຼື "ບໍ່ມີຄໍາເຕືອນ") ບໍ່ມີຜົນແລະ $^W ແມ່ນບໍ່ຖືກຕ້ອງໃນເວລາລວບລວມແລະ
ຄວາມຈິງໃນເວລາແລ່ນ.
· ການໂຫຼດຕາຕະລາງ Unicode ໃນລະຫວ່າງການຈັບຄູ່ການສະແດງອອກເປັນປົກກະຕິສາມາດເຮັດໃຫ້ເກີດການຢືນຢັນ
ຄວາມລົ້ມເຫຼວພາຍໃຕ້ການດີບັກສ້າງຖ້າຫາກວ່າການແຂ່ງຂັນທີ່ຜ່ານມາໃຊ້ດຽວກັນປົກກະຕິຫຼາຍ
ການສະແດງອອກ. [perl #122747]
· ການໂຄນກະທູ້ທີ່ໃຊ້ໃນການເຮັດວຽກບໍ່ຖືກຕ້ອງສໍາລັບການ subs lexical, ອາດຈະເຮັດໃຫ້ເກີດອຸປະຕິເຫດຫຼື
double frees ໃນການອອກ.
· ນັບຕັ້ງແຕ່ Perl 5.14.0, ການລຶບ $SomePackage::{__ANON__} ແລະຈາກນັ້ນຍົກເລີກການກຳນົດການບໍ່ເປີດເຜີຍຊື່
subroutine ສາມາດທໍາລາຍສິ່ງຕ່າງໆພາຍໃນ, ສົ່ງຜົນໃຫ້ Devel::Peek crashing ຫຼື B.pm.
ໃຫ້ຂໍ້ມູນທີ່ບໍ່ມີເຫດຜົນ. ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ.
· "(caller $n)[3]" ໃນປັດຈຸບັນລາຍງານຊື່ຂອງ lexical subs, ແທນທີ່ຈະປະຕິບັດໃຫ້ເຂົາເຈົ້າເປັນ
"(ບໍ່ຮູ້ຈັກ)".
· "sort subname LIST" ໃນປັດຈຸບັນສະຫນັບສະຫນູນການນໍາໃຊ້ຍ່ອຍ lexical ເປັນປົກກະຕິການປຽບທຽບ.
· ນາມແຝງ (ຕົວຢ່າງ:, ຜ່ານ "*x = * y") ສາມາດສັບສົນການມອບຫມາຍລາຍຊື່ທີ່ກ່າວເຖິງທັງສອງ
ຊື່ສໍາລັບຕົວແປດຽວກັນທັງສອງຂ້າງ, ເຮັດໃຫ້ຄ່າທີ່ບໍ່ຖືກຕ້ອງຖືກມອບຫມາຍ.
[perl #15667]
· terminators ຍາວ here-doc ສາມາດເຮັດໃຫ້ເກີດການອ່ານທີ່ບໍ່ດີຢູ່ໃນເສັ້ນສັ້ນຂອງການປ້ອນຂໍ້ມູນ. ນີ້ມີ
ໄດ້ຮັບການແກ້ໄຂ. ມັນເປັນທີ່ສົງໃສວ່າອຸປະຕິເຫດໃດຫນຶ່ງສາມາດເກີດຂຶ້ນ. ບັກນີ້ກັບຄືນໄປຫາ
ໃນເວລາທີ່ here-docs ໄດ້ຖືກນໍາສະເຫນີໃນ Perl 3.000 ເມື່ອຊາວຫ້າປີກ່ອນ.
·ການເພີ່ມປະສິດທິພາບໃນ "split" ເພື່ອປິ່ນປົວ "split /^/" ເຊັ່ນ "split /^/m" ມີຄວາມໂຊກຮ້າຍ.
ຜົນຂ້າງຄຽງຂອງການປິ່ນປົວ "split /\A/" ເຊັ່ນ "split /^/m", ເຊິ່ງມັນບໍ່ຄວນ.
ນີ້ໄດ້ຖືກແກ້ໄຂແລ້ວ. (ຢ່າງໃດກໍຕາມ, ໃຫ້ສັງເກດວ່າ "split /^x/" ບໍ່ໄດ້ປະຕິບັດຄື
"split /^x/m", ເຊິ່ງຖືວ່າເປັນ bug ແລະຈະຖືກແກ້ໄຂໃນອະນາຄົດ.
ສະບັບ.) [perl #122761]
· syntax "My Class $var" ທີ່ຮູ້ຈັກໜ້ອຍ (ເບິ່ງຊ່ອງຂໍ້ມູນ ແລະຄຸນລັກສະນະ) ອາດສັບສົນ
ໃນຂອບເຂດຂອງ "ໃຊ້ utf8" ຖ້າ "Class" ແມ່ນຄ່າຄົງທີ່ທີ່ມີຄ່າ Latin-1.
ລັກສະນະ.
· ການລັອກ ແລະປົດລັອກຄ່າຜ່ານ Hash::Util ຫຼື "Internals::SvREADONLY" ບໍ່ມີອີກຕໍ່ໄປ.
ຜົນກະທົບໃດໆກ່ຽວກັບຄ່າທີ່ຖືກອ່ານເທົ່ານັ້ນທີ່ຈະເລີ່ມຕົ້ນດ້ວຍ. ກ່ອນຫນ້ານີ້, ການປົດລັອກດັ່ງກ່າວ
ຄ່າສາມາດສົ່ງຜົນໃຫ້ເກີດການຂັດຂ້ອງ, ຄ້າງ ຫຼືພຶດຕິກຳທີ່ຜິດພາດອື່ນໆ.
· ບາງອັນທີ່ບໍ່ສິ້ນສຸດ "(?(...)...)" ກໍ່ສ້າງໃນສຳນວນປົກກະຕິຈະຂັດຂ້ອງ
ຫຼືໃຫ້ຂໍ້ຄວາມຜິດພາດທີ່ຜິດພາດ. "/(?(1)/" ແມ່ນຫນຶ່ງໃນຕົວຢ່າງດັ່ງກ່າວ.
· "pack "w", $tied" ຈະບໍ່ໂທຫາ FETCH ສອງຄັ້ງ.
·ລາຍຊື່ການມອບໝາຍເຊັ່ນ "($x, $z) = (1, $y)" ດຽວນີ້ເຮັດວຽກໄດ້ຢ່າງຖືກຕ້ອງຖ້າ $x ແລະ $y ໄດ້
ນາມແຝງໂດຍ "foreach".
·ບາງຮູບແບບລວມທັງບລັອກລະຫັດທີ່ມີ syntax ຜິດພາດ, ເຊັ່ນ "/ (?{(^{})/", ຈະ
ການຢືນຢັນການວາງສາຍ ຫຼືລົ້ມເຫລວໃນການສ້າງການດີບັກ. ໃນປັດຈຸບັນພວກເຂົາຜະລິດຄວາມຜິດພາດ.
· ຄວາມລົ້ມເຫລວໃນການຢືນຢັນເມື່ອການແຍກວິເຄາະ "ຈັດຮຽງ" ດ້ວຍການເປີດການນຳໃຊ້ການດີບັກໄດ້ຖືກແກ້ໄຂແລ້ວ. [perl
#122771] .
· "*a = *b; @a = ແຍກ //, $b[1]" ສາມາດອ່ານບໍ່ດີແລະສ້າງຜົນໄດ້ຮັບຂີ້ເຫຍື້ອ.
· ໃນ "() = @array = ແຍກ", "() = "ໃນຕອນເລີ່ມຕົ້ນຈະບໍ່ສັບສົນຕົວເພີ່ມປະສິດທິພາບອີກຕໍ່ໄປ.
ການຄາດຄະເນຈໍາກັດ 1.
· ການເຕືອນໄພອັນຕະລາຍຈະບໍ່ປ້ອງກັນຜົນຂອງຂໍ້ຜິດພາດ syntax ອີກຕໍ່ໄປ. [perl #122966]
.
· ແກ້ໄຂຂໍ້ຜິດພາດການແປງສອງຄັ້ງຫາຍາວສອງເທົ່າ NaN ໃນ VMS. ສໍາລັບ NaNs ທີ່ງຽບ (ແລະພຽງແຕ່ກ່ຽວກັບ
Itanium, ບໍ່ແມ່ນ Alpha) infinity ລົບແທນທີ່ຈະ NaN ຖືກຜະລິດ.
· ແກ້ໄຂບັນຫາທີ່ເຮັດໃຫ້ເກີດ "ເຮັດໃຫ້ distclean" ບໍ່ຖືກຕ້ອງເຮັດໃຫ້ບາງໄຟລ໌ຢູ່ຫລັງ.
[perl #122820] .
· AIX ໃນປັດຈຸບັນກໍານົດຄວາມຍາວໃນ "getsockopt" ຢ່າງຖືກຕ້ອງ. [perl #120835]
. [cpan #120835]
. [cpan #91183]
.
·ໄລຍະການເພີ່ມປະສິດທິພາບຂອງການລວບລວມ regexp ສາມາດດໍາເນີນການ "ຕະຫຼອດໄປ" ແລະຫມົດໄປ
ຄວາມຊົງຈໍາພາຍໃຕ້ສະຖານະການສະເພາະໃດຫນຶ່ງ; ຕອນນີ້ແກ້ໄຂແລ້ວ. [perl #122283]
.
· script ການທົດສອບ t/op/crypt.t ໃນປັດຈຸບັນໃຊ້ SHA-256 algorithm ຖ້າຄ່າເລີ່ມຕົ້ນແມ່ນ
ຄົນພິການ, ແທນທີ່ຈະໃຫ້ຄວາມລົ້ມເຫລວ. [perl #121591]
.
· ແກ້ໄຂຄວາມຜິດພາດ off-by-one ໃນເວລາທີ່ການຕັ້ງຄ່າຂະຫນາດຂອງ array ທີ່ແບ່ງປັນ. [perl #122950]
.
·ແກ້ໄຂຂໍ້ບົກພ່ອງທີ່ສາມາດເຮັດໃຫ້ perl ເຂົ້າໄປໃນ loop infinite ໃນລະຫວ່າງການລວບລວມ. ໃນ
ໂດຍສະເພາະ, ກ ໃນຂະນະທີ່(1) ໃນບັນຊີລາຍຊື່ຍ່ອຍ, ຕົວຢ່າງ:
sub foo { () = ($a, ຂອງຂ້ອຍ $b, ($c, ເຮັດ { ໃນຂະນະທີ່(1) {} })) }
ແມງໄມ້ໄດ້ຖືກນໍາສະເຫນີໃນ 5.20.0 [perl #122995]
.
· ໃນ Win32, ຖ້າຕົວແປເປັນ "ທ້ອງຖິ່ນ" -ized ໃນຂະບວນການ pseudo- ທີ່ຕໍ່ມາ forked,
ການຟື້ນຟູຄຸນຄ່າຕົ້ນສະບັບໃນຂະບວນການ pseudo ຂອງເດັກເກີດຈາກການສໍ້ລາດບັງຫຼວງຄວາມຊົງຈໍາແລະ
crash ໃນຂະບວນການ pseudo-ເດັກນ້ອຍ (ແລະດັ່ງນັ້ນຂະບວນການ OS). [perl #40565]
.
· ການໂທຫາ "ຂຽນ" ໃນຮູບແບບທີ່ມີຊ່ອງຂໍ້ມູນ "^**" ສາມາດເຮັດໃຫ້ເກີດຄວາມຕື່ນຕົກໃຈໃນ "sv_chop()" ຖ້າ
ມີການໂຕ້ຖຽງບໍ່ພຽງພໍ ຫຼືຖ້າຕົວແປທີ່ໃຊ້ເພື່ອຕື່ມຂໍ້ມູນໃສ່ຊ່ອງຂໍ້ມູນຫວ່າງເປົ່າ.
[perl #123245] .
· ຊື່ຍ່ອຍທີ່ບໍ່ແມ່ນ ASCII lexical ໃນປັດຈຸບັນປາກົດໂດຍບໍ່ມີການຕິດຕາມ junk ເມື່ອພວກເຂົາປາກົດຢູ່ໃນຄວາມຜິດພາດ
ຂໍ້ຄວາມ.
· ຕົວແບບຍ່ອຍຍ່ອຍ "\@" ຈະບໍ່ເຮັດໃຫ້ອາເຣທີ່ມີວົງເລັບແປແລ້ວ (ການເອົາ
ອ້າງອີງໃສ່ແຕ່ລະອົງປະກອບ), ແຕ່ໃຊ້ເວລາການອ້າງອີງເຖິງ array ຕົວຂອງມັນເອງ. [perl #47363]
.
· ບຼັອກທີ່ບັນຈຸບໍ່ມີຫຍັງນອກຈາກ loop "for" ແບບ C ສາມາດທໍາລາຍ stack ໄດ້,
ເຮັດໃຫ້ລາຍຊື່ນອກບລັອກສູນເສຍອົງປະກອບ ຫຼືມີການຂຽນທັບອົງປະກອບ. ນີ້
ອາດຈະເກີດຂຶ້ນກັບ "ແຜນທີ່ { for(...){...} } ... " ແລະດ້ວຍລາຍການທີ່ມີ "ເຮັດ {
ສໍາລັບ(...){...} }". [perl #123286] .
· "scalar()" ຕອນນີ້ຂະຫຍາຍພັນທຸກໍາຂອງ lvalue, ດັ່ງນັ້ນ "for(scalar($#foo)) { ... }" ສາມາດ
ແກ້ໄຂ $#foo ຜ່ານ $_.
· "qr/@array(?{block})/" ຈະບໍ່ຕາຍກັບ "ການຄັດລອກທີ່ແປກປະຫຼາດຂອງ ARRAY". [perl #123344]
.
· "eval '$variable'" ໃນ routines ຍ່ອຍທີ່ມີຊື່ nested ບາງຄັ້ງຈະຊອກຫາທົ່ວໂລກ.
ຕົວແປເຖິງແມ່ນວ່າມີຕົວແປ lexical ໃນຂອບເຂດ.
· ໃນ perl 5.20.0, "sort CORE::fake" ບ່ອນທີ່ 'fake' ແມ່ນສິ່ງອື່ນນອກເຫນືອຈາກຄໍາສໍາຄັນ,
ເລີ່ມຕົ້ນຕັດຕົວອັກສອນສຸດທ້າຍ 6 ຕົວອອກແລະປະຕິບັດຜົນໄດ້ຮັບເປັນຊື່ຍ່ອຍ.
ພຶດຕິກຳກ່ອນໜ້າຂອງການປິ່ນປົວ "CORE::fake" ເປັນຊື່ຍ່ອຍປະເພດໄດ້ຖືກຟື້ນຟູຄືນມາ.
[perl #123410] .
· ຢູ່ນອກ "ໃຊ້ utf8", ຕົວແປຄຳສັບພາສາລາຕິນ-1 ຕົວອັກສອນດຽວແມ່ນບໍ່ອະນຸຍາດໃຫ້ໃຊ້. ໄດ້
ຂໍ້ຄວາມຜິດພາດສໍາລັບມັນ, "ບໍ່ສາມາດນໍາໃຊ້ທົ່ວໂລກ $foo ... ", ໄດ້ໃຫ້ຂີ້ເຫຍື້ອແທນທີ່ຈະເປັນ.
ຊື່ຕົວແປ.
· "readline" ໃນຕົວຈັບທີ່ບໍ່ມີຢູ່ແລ້ວເຮັດໃຫ້ "${^LAST_FH}" ຜະລິດການອ້າງອີງເຖິງ
ຕາຕະລາງທີ່ບໍ່ໄດ້ກໍານົດ (ຫຼືການຢືນຢັນລົ້ມເຫລວ). ດຽວນີ້ "${^LAST_FH}" ສິ້ນສຸດລົງໂດຍບໍ່ໄດ້ກໍານົດ.
· "(...) x ... " ໃນບໍລິບົດທີ່ບໍ່ມີປະໂຫຍດ ຕອນນີ້ນຳໃຊ້ບໍລິບົດສະເກັດລາກັບການໂຕ້ແຍ້ງຊ້າຍ,
ແທນທີ່ຈະເປັນສະພາບການຍ່ອຍໃນປັດຈຸບັນໄດ້ຖືກເອີ້ນໃນ. [perl #123020]
.
ເປັນທີ່ຮູ້ຈັກ ບັນຫາ
· "pack"-ing a NaN on a perl compiled with Visual C 6 ບໍ່ໄດ້ປະຕິບັດຢ່າງຖືກຕ້ອງ, ນໍາພາ
ກັບຄວາມລົ້ມເຫຼວຂອງການທົດສອບໃນ t/op/infnan.t. [perl 125203]
· ເປົ້າໝາຍແມ່ນເພື່ອໃຫ້ Perl ສາມາດຖືກລວບລວມຄືນໃໝ່ເພື່ອເຮັດວຽກຢ່າງສົມເຫດສົມຜົນໃນທຸກ Unicode
ສະບັບ. ໃນ Perl 5.22, ຢ່າງໃດກໍຕາມ, ຮຸ່ນທໍາອິດທີ່ສຸດແມ່ນ Unicode 5.1 (ປະຈຸບັນແມ່ນ.
7.0).
·ເວທີ EBCDIC
·ຕົວປະຕິບັດການ "cmp" (ແລະເພາະສະນັ້ນ "ຄັດ") ບໍ່ຈໍາເປັນຕ້ອງໃຫ້ຜົນໄດ້ຮັບທີ່ຖືກຕ້ອງ
ເມື່ອ operands ທັງສອງແມ່ນ UTF-EBCDIC encoded strings ແລະມີການປະສົມຂອງ ASCII.
ແລະ/ຫຼື ຕົວອັກສອນຄວບຄຸມ, ພ້ອມກັບຕົວລະຄອນອື່ນໆ.
· ໄລຍະທີ່ມີ "\N{...}" ໃນຕົວປະຕິບັດການແປ "tr///" (ແລະ "y///")
ຖືກປະຕິບັດແຕກຕ່າງຈາກຂອບເຂດທີ່ທຽບເທົ່າໃນຮູບແບບການສະແດງອອກປົກກະຕິ.
ພວກມັນຄວນຈະ, ແຕ່ບໍ່ຄວນເຮັດໃຫ້ຄ່າຕ່າງໆຢູ່ໃນຂອບເຂດທີ່ຈະຖືກປະຕິບັດເປັນ
ຈຸດລະຫັດ Unicode, ແລະບໍ່ແມ່ນຈຸດພື້ນເມືອງ. ("ຮຸ່ນ 8 ການສະແດງອອກປົກກະຕິ" ໃນ
perlre ໃຫ້ລາຍລະອຽດກ່ຽວກັບວິທີທີ່ມັນຄວນຈະເຮັດວຽກ.)
· ການເຂົ້າລະຫັດແລະການເຂົ້າລະຫັດສ່ວນຫຼາຍແມ່ນແຕກຫັກ.
· ໂມດູນ CPAN ຫຼາຍອັນທີ່ສົ່ງກັບຫຼັກສະແດງຜົນການທົດສອບລົ້ມເຫລວ.
· "pack"/"unpack" ທີ່ມີຮູບແບບ "U0" ອາດຈະບໍ່ເຮັດວຽກຢ່າງຖືກຕ້ອງ.
· ໂມດູນຕໍ່ໄປນີ້ເປັນທີ່ຮູ້ກັນວ່າມີຄວາມລົ້ມເຫລວໃນການທົດສອບກັບ Perl ລຸ້ນນີ້. ໃນ
ຫຼາຍກໍລະນີ, ເພີ້ມໄດ້ຖືກສົ່ງ, ດັ່ງນັ້ນຫວັງວ່າຈະມີການປ່ອຍໃຫມ່ໃນໄວໆນີ້:
· B::ສ້າງເວີຊັນ 1.50
· B::Utils ເວີຊັ່ນ 0.25
· ເວີຊັ່ນ 6.42
· Dancer ຮຸ່ນ 1.3130
· ຂໍ້ມູນ::Alias ເວີຊັນ 1.18
· ຂໍ້ມູນ::Dump::Streamer ລຸ້ນ 2.38
· ຂໍ້ມູນ::Util ເວີຊັນ 0.63
· ພັດທະນາ:: Spy ສະບັບ 0.07
· ສະບັບ invoker 0.34
· Lexical::Var ສະບັບ 0.009
· LWP::ConsoleLogger ເວີຊັ່ນ 0.000018
· Mason ຮຸ່ນ 2.22
· NgxQueue ສະບັບ 0.02
· Padre ຮຸ່ນ 1.00
· Parse::ຄໍາສໍາຄັນ 0.08
Obituary
Brian McCauley ໄດ້ເສຍຊີວິດໃນວັນທີ 8 ພຶດສະພາ 2015. ລາວເປັນໂປສເຕີເລື້ອຍໆໃຫ້ກັບ Usenet, Perl Monks, ແລະ
ເວທີສົນທະນາ Perl ອື່ນໆ, ແລະເຮັດໃຫ້ການປະກອບສ່ວນ CPAN ຫຼາຍພາຍໃຕ້ຊື່ NOBULL, ລວມທັງ
Perl FAQ. ລາວໄດ້ເຂົ້າຮ່ວມເກືອບທຸກໆ YAPC::ເອີຣົບ, ແລະແທ້ຈິງແລ້ວ, ຊ່ວຍຈັດຕັ້ງ
YAPC::Europe 2006 ແລະ QA Hackathon 2009. ປັນຍາຂອງລາວ ແລະຄວາມສຸກຂອງລາວໃນລະບົບທີ່ສັບສົນ.
ໂດຍ ສະ ເພາະ ແມ່ນ ປາ ກົດ ຂື້ນ ໃນ ຄວາມ ຮັກ ຂອງ ເກມ ກະ ດານ; mongers Perl ຈໍານວນຫຼາຍຈະມີຄວາມມັກ
ຄວາມຊົງຈໍາຂອງການຫຼີ້ນ Fluxx ແລະເກມອື່ນໆກັບ Brian. ລາວຈະຖືກພາດ.
ຂອບໃຈ
Perl 5.22.0 ເປັນຕົວແທນປະມານ 12 ເດືອນຂອງການພັດທະນານັບຕັ້ງແຕ່ Perl 5.20.0 ແລະ
ມີປະມານ 590,000 ເສັ້ນຂອງການປ່ຽນແປງໃນທົ່ວ 2,400 ໄຟລ໌ຈາກ 94 ຜູ້ຂຽນ.
ບໍ່ລວມໄຟລ໌ທີ່ສ້າງຂຶ້ນອັດຕະໂນມັດ, ເອກະສານ ແລະເຄື່ອງມືປ່ອຍ, ມີປະມານ
370,000 ເສັ້ນຂອງການປ່ຽນແປງເປັນໄຟລ໌ 1,500 .pm, .t, .c ແລະ .h.
Perl ສືບຕໍ່ຈະເລີນຮຸ່ງເຮືອງໃນທົດສະວັດທີສາມຂອງຕົນຍ້ອນຊຸມຊົນຂອງຜູ້ໃຊ້ທີ່ມີຊີວິດຊີວາ
ແລະຜູ້ພັດທະນາ. ປະຊາຊົນດັ່ງຕໍ່ໄປນີ້ແມ່ນເປັນທີ່ຮູ້ຈັກໄດ້ປະກອບສ່ວນການປັບປຸງທີ່
ກາຍເປັນ Perl 5.22.0:
Aaron Crane, Abhijit Menon-Sen, Abigail, Alberto Simo~es, Alex Solovey, Alex Vandiver,
Alexandr Ciornii, Alexandre (Midnite) Jousset, Andreas Koenig, Andreas Voegele, Andrew
ສົດ, Andy Dougherty, Anthony Heading, Aristotle Pagaltzis, brian d foy, Brian Fraser,
Chad Granum, Chris 'BinGOs' Williams, Craig A. Berry, Dagfinn Ilmari Mannsaaker, Daniel
Dragan, Darin McBride, Dave Rolsky, David Golden, David Mitchell, David Wheeler, Dmitri
Tikhonov, Doug Bell, E. Choroba, Ed J, Eric Herman, ພໍ່ Chrysostomos, George Greer,
Glenn D. Golden, Graham Knop, H.Merijn Brand, Herbert Breunung, Hugo van der Sanden, James
E Keenan, James McCoy, James Raspass, Jan Dubois, Jarkko Hietaniemi, Jasmine Ngan, Jerry
D. Hedden, Jim Cromie, John Goodyear, kafka, Karen Etheridge, Karl Williamson, Kent
Fredric, kmx, Lajos Veres, Leon Timmermans, Lukas Mai, Mathieu Arnold, Matthew Horsfall,
Max Maischein, Michael Bunk, Nicholas Clark, Niels Thykier, Niko Tyni, Norman Koch,
Olivier Mengue, Peter John Acklam, Peter Martini, Petr PisaX, Philippe Bruhat (BooK),
Pierre Bogossian, Rafael Garcia-Suarez, Randy Stauner, Reini Urban, Ricardo Signes, Rob
Hoelz, Rostislav Skudnov, Sawyer X, Shirakata Kentaro, ປາ Shlomi, Sisyphus, Slaven
Rezic, Smylers, Steffen Mueller, Steve Hay, Sullivan Beck, syber, Tadeusz SoXnierz, Thomas
Sibley, Todd Rinaldo, Tony Cook, Vincent Pit, Vladimir Marek, Yaroslav Kuzmin, Yves Orton,
AEvar Arnfjoer` Bjarmason.
ບັນຊີລາຍຊື່ຂ້າງເທິງແມ່ນເກືອບແນ່ນອນບໍ່ສົມບູນຍ້ອນວ່າມັນໄດ້ຖືກຜະລິດອັດຕະໂນມັດຈາກ
ປະຫວັດການຄວບຄຸມສະບັບ. ໂດຍສະເພາະ, ມັນບໍ່ໄດ້ລວມເອົາຊື່ຂອງ (ຫຼາຍ
ຂອບໃຈ) ຜູ້ປະກອບສ່ວນທີ່ລາຍງານບັນຫາກັບຕົວຕິດຕາມຂໍ້ຜິດພາດ Perl.
ການປ່ຽນແປງຫຼາຍຢ່າງລວມຢູ່ໃນສະບັບນີ້ແມ່ນມາຈາກໂມດູນ CPAN ລວມຢູ່ໃນ
ຫຼັກ Perl. ພວກເຮົາຂໍຂອບໃຈກັບຊຸມຊົນ CPAN ທັງຫມົດສໍາລັບການຊ່ວຍໃຫ້ Perl ຈະເລີນຮຸ່ງເຮືອງ.
ສໍາລັບບັນຊີລາຍຊື່ຄົບຖ້ວນສົມບູນຂອງຜູ້ປະກອບສ່ວນປະຫວັດສາດຂອງ Perl, ກະລຸນາເບິ່ງທີ່ AUTHORS
ໄຟລ໌ໃນການແຈກຢາຍແຫຼ່ງ Perl.
ການລາຍງານ ແມງໄມ້
ຖ້າເຈົ້າພົບສິ່ງທີ່ເຈົ້າຄິດວ່າເປັນຂໍ້ບົກພ່ອງ, ເຈົ້າອາດຈະກວດເບິ່ງບົດຄວາມທີ່ໂພສເມື່ອບໍ່ດົນມານີ້
ກຸ່ມຂ່າວ comp.lang.perl.misc ແລະຖານຂໍ້ມູນ perl bug ຢູ່ . ຢູ່ທີ່ນັ້ນ
ອາດຈະເປັນຂໍ້ມູນຢູ່ທີ່http://www.perl.org/>, ຫນ້າທໍາອິດ Perl.
ຖ້າທ່ານເຊື່ອວ່າທ່ານມີຂໍ້ບົກພ່ອງທີ່ບໍ່ໄດ້ລາຍງານ, ກະລຸນາດໍາເນີນໂຄງການ perlbug ທີ່ມາພ້ອມກັບ
ການປ່ອຍຕົວຂອງເຈົ້າ. ໃຫ້ແນ່ໃຈວ່າຈະຕັດ bug ຂອງທ່ານລົງເປັນກໍລະນີທົດສອບຂະຫນາດນ້ອຍແຕ່ພຽງພໍ. ບັກຂອງເຈົ້າ
ບົດລາຍງານ, ພ້ອມກັບຜົນຜະລິດຂອງ "perl -V", ຈະຖືກສົ່ງໄປຫາ [email protected] ຈະ
ວິເຄາະໂດຍທີມງານ Porting Perl.
ຖ້າຂໍ້ບົກພ່ອງທີ່ທ່ານກໍາລັງລາຍງານມີຜົນກະທົບດ້ານຄວາມປອດໄພ, ເຊິ່ງເຮັດໃຫ້ມັນບໍ່ເຫມາະສົມ
ສົ່ງໄປຫາບັນຊີລາຍຊື່ທາງໄປສະນີທີ່ເກັບໄວ້ສາທາລະນະ, ຫຼັງຈາກນັ້ນກະລຸນາສົ່ງໄປທີ່
[email protected]. ນີ້ຊີ້ໃຫ້ເຫັນເຖິງການສັ່ງຈອງທີ່ປິດການສົ່ງຈົດໝາຍທີ່ບໍ່ໄດ້ເກັບໄວ້
ບັນຊີລາຍຊື່, ເຊິ່ງປະກອບມີຄະນະກໍາມະຫຼັກທັງຫມົດ, ຜູ້ທີ່ຈະສາມາດຊ່ວຍປະເມີນຜົນກະທົບ
ຂອງບັນຫາ, ຊອກຫາການແກ້ໄຂ, ແລະການຊ່ວຍເຫຼືອປະສານງານການປ່ອຍການແກ້ໄຂເພື່ອ
ຫຼຸດຜ່ອນຫຼືແກ້ໄຂບັນຫາໃນທົ່ວທຸກເວທີທີ່ Perl ໄດ້ຮັບການສະຫນັບສະຫນູນ. ກະລຸນາເທົ່ານັ້ນ
ໃຊ້ທີ່ຢູ່ນີ້ສໍາລັບບັນຫາຄວາມປອດໄພໃນຫຼັກ Perl, ບໍ່ແມ່ນສໍາລັບໂມດູນທີ່ເປັນເອກະລາດ
ແຈກຢາຍຢູ່ໃນ CPAN.
ໃຊ້ perl5220delta ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net