GoGPT Best VPN GoSearch

OnWorks فافيكون

perl5220delta - الإنترنت في السحابة

قم بتشغيل perl5220delta في مزود الاستضافة المجانية OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر perl5220delta الذي يمكن تشغيله في مزود الاستضافة المجانية OnWorks باستخدام إحدى محطات العمل المجانية المتعددة على الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


perl5220delta - ما الجديد في Perl v5.22.0

الوصف


يصف هذا المستند الاختلافات بين الإصدار 5.20.0 والإصدار 5.22.0.

إذا كنت تقوم بالترقية من إصدار سابق مثل 5.18.0 ، اقرأ أولاً perl5200delta ،
الذي يصف الاختلافات بين 5.18.0 و 5.20.0.

جوهر التحسينات


جديد المختصة بالبت مشغلي
تمت إضافة ميزة تجريبية جديدة تجعل عوامل التشغيل القياسية الأربعة
("& | ^ ~") تتعامل مع معاملاتها بشكل متسق كأرقام، وتقدم أربعة منقطات جديدة
عوامل التشغيل ("&. |. ^. ~.") التي تتعامل مع معاملاتها بشكل متسق كسلاسل. نفس الشيء
ينطبق على متغيرات المهمة ("&= |= ^= &.= |.= ^.=").

لاستخدام هذا، قم بتمكين ميزة "bitwise" وقم بتعطيل التحذيرات "التجريبية::bitwise".
فئة. راجع "مشغلي سلسلة Bitwise" في perlop للحصول على التفاصيل. [بيرل #123466]
.

جديد الماس المزدوج عامل
"<<>>" يشبه "<>" ولكنه يستخدم "فتح" ثلاثي الوسائط لفتح كل ملف فيARGV. هذا يعنى
أنه سيتم التعامل مع كل عنصر من @ARGV كاسم ملف فعلي، ولن يتم التعامل مع "|foo".
يعامل كأنبوب مفتوح.

جديد "\ب" الحدود in منتظم التعبيرات
"qr/\b{gcb}/"

يشير "gcb" إلى Grapheme Cluster Boundary. إنها خاصية Unicode التي تعثر على ملف
الحدود بين تسلسلات الأحرف التي تبدو كحرف واحد بالنسبة إلى المواطن الأصلي
المتحدث باللغة. لقد كان لدى Perl منذ فترة طويلة القدرة على التعامل مع هذه الأمور من خلال "\X"
تسلسل الهروب العادي والآن، هناك طريقة بديلة للتعامل مع هذه الأمور. راجع "\ب{}،
\b, \B{}, \B" في الشرطة المائلة المائلة perlrebacks للحصول على التفاصيل.

"qr/\b{wb}/"

يشير "wb" إلى حدود الكلمة. إنها خاصية Unicode التي تجد الحدود بينهما
كلمات. هذا يشبه "\b" العادي (بدون أقواس) ولكنه أكثر ملاءمة لـ
معالجة اللغة الطبيعية. فهو يعرف، على سبيل المثال، أن الفواصل العليا يمكن أن تحدث في
وسط الكلمات. راجع "\b{}, \b, \B{}, \B" في الشرطة المائلة المائلة perlrebacks للحصول على التفاصيل.

"ريال قطري/\ب{SB}/"

يشير "sb" إلى حدود الجملة. إنها خاصية Unicode للمساعدة في التحليل الطبيعي
الجمل اللغوية. راجع "\b{}, \b, \B{}, \B" في الشرطة المائلة المائلة perlrebacks للحصول على التفاصيل.

عدم الالتقاط منتظم التعبير علم
تدعم التعبيرات العادية الآن علامة "/n" التي تعمل على تعطيل التقاط وتعبئة $1، $2،
إلخ داخل المجموعات:

"hello" =~ /(hi|hello)/n; # لم يتم تعيين $1

وهذا يعادل وضع "؟:" في بداية كل مجموعة التقاط.

راجع "n" في perlre لمزيد من المعلومات.

"استعمال re 'حازم'"
يطبق هذا قواعد بناء جملة أكثر صرامة على أنماط التعبير العادي المجمعة داخلها
نِطَاق. نأمل أن ينبهك هذا إلى الأخطاء المطبعية وغيرها من السلوكيات غير المقصودة
تمنعنا مشكلات التوافق مع الإصدارات السابقة من إعداد التقارير بالتعبير العادي العادي
مجموعات. لأن سلوك هذا عرضة للتغيير في إصدارات بيرل المستقبلية
ومع اكتسابنا للخبرة، فإن استخدام هذه البراغما سيثير تحذيرًا من الفئة
"تجريبية::re_strict". انظر "صارم" في إعادة.

يونيكود 7.0 (مع تصحيح) is زيوت ناو أيد
للحصول على تفاصيل حول ما هو موجود في هذا الإصدار، راجع
<http://www.unicode.org/versions/Unicode7.0.0/>. إصدار Unicode 7.0 الذي يأتي
مع Perl يتضمن تصحيحًا للتعامل مع تشكيل الحروف الرسومية باللغة العربية (انظر
<http://www.unicode.org/errata/#current_errata>).

"استعمال لغة" يمكن بتقييد التي محلي الفئات . تتأثر
أصبح من الممكن الآن تمرير معلمة "لاستخدام الإعدادات المحلية" لتحديد مجموعة فرعية من الإعدادات المحلية
الفئات لتكون على دراية بالإعدادات المحلية، مع عدم تأثر الفئات المتبقية. راجع ""استخدام اللغة""
pragma" في perllocale للحصول على التفاصيل.

بيرل زيوت ناو وتدعم POSIX 2008 محلي عملة إضافات
على الأنظمة الأساسية القادرة على التعامل مع POSIX.1-2008، يتم إرجاع التجزئة بواسطة
يتضمن "POSIX::localeconv()" حقول العملة الدولية التي أضافها هذا الإصدار من
معيار بوسيكس. هذه هي "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".

أفضل الاستدلال on أقدم منصات لـ تحديد محلي UTF-8ness
على الأنظمة الأساسية التي لا تطبق معيار C99 ولا معيار POSIX 2001،
تحديد ما إذا كانت اللغة الحالية هي UTF-8 أم لا يعتمد على الاستدلال. هؤلاء هم
تحسنت في هذا الإصدار.

اسم مستعار بواسطة مرجع
يمكن الآن تسمية المتغيرات والإجراءات الفرعية بأسماء مستعارة عن طريق تعيين مرجع:

\$c = \$d;
\&x = \&y;

يمكن أيضًا تحقيق التعرج باستخدام شرطة مائلة عكسية قبل مكرر "foreach".
عامل؛ ربما يكون هذا هو المصطلح الأكثر فائدة الذي توفره هذه الميزة:

foreach \%hash (@array_of_hash_refs) { ... }

هذه الميزة تجريبية ويجب تمكينها من خلال "استخدام ميزة "إعادة التخصيص"". فإنه سوف
تحذير ما لم يتم تعطيل فئة التحذيرات "التجريبية::refaliasing".

راجع "تخصيص المراجع" في perlref

"النموذج المبدئي" مع لا الحجج
"النموذج الأولي ()" بدون وسائط يستنتج الآن $_. [بيرل #123514]
.

جديد ":مقدار ثابت" روتين السمة
يمكن تطبيق السمة "const" على روتين فرعي مجهول. يتسبب في الفرعية الجديدة ل
يتم تنفيذه فورًا عند إنشاء واحد (أي عندما يكون التعبير "الفرعي".
تم التقييم). يتم التقاط قيمته واستخدامه لإنشاء روتين فرعي ثابت جديد
عاد. هذه الميزة تجريبية. راجع "الوظائف الثابتة" في perlsub.

"رقم الملف" زيوت ناو أعمال on دليل مقابض
عندما يتوفر الدعم المناسب في نظام التشغيل، سيتم دمج "fileno" الآن
يعمل على مقابض الدليل، مما ينتج عنه واصف الملف الأساسي بنفس الطريقة التي يعمل بها
مقابض الملفات. في أنظمة التشغيل التي لا تحتوي على مثل هذا الدعم، "fileno" على مؤشر الدليل
يستمر في إرجاع القيمة غير المحددة، كما كان من قبل، ولكنه يقوم أيضًا بتعيين $! للإشارة إلى أن
العملية غير مدعومة.

حاليًا، يستخدم هذا إما عضو "dd_fd" في بنية نظام التشغيل "DIR"، أو عضوًا دير(3)
تعمل على النحو المحدد بواسطة POSIX.1-2008.

قائمة النموذج المرفق of أنبوب جاكيت نفذت لـ Win32
شكل قائمة الأنابيب:

افتح $fh، "-|"، "program"، @arguments؛

يتم تطبيقه الآن على Win32. لديها نفس القيود مثل "قائمة النظام" على Win32، منذ ذلك الحين
لا يقبل Win32 API وسيطات البرنامج كقائمة.

مهمة إلى الإدارية تكرار
يمكن الآن استخدام "(...) x ..." ضمن القائمة المخصصة لها، طالما أنها في الجانب الأيسر
الجانب هو قيمة صالحة. وهذا يسمح بكتابة "(undef,undef,$foo) = that_function()"
كـ "((undef)x2, $foo) = that_function()".

اللامحدودية و نان (ليس رقما) معالجة تحسن
قيم النقطة العائمة قادرة على الاحتفاظ بالقيم الخاصة اللانهاية، واللانهاية السالبة، و
NaN (ليس رقمًا). الآن نحن ندرك وننشر القيمة بقوة أكبر
الحسابات، وعند الإخراج، قم بتطبيعها إلى السلاسل "Inf"، و"-Inf"، و"NaN".

انظر أيضًا تحسينات POSIX.

عائم نقطة تحليل لديها كان تحسن
تم تحسين تحليل وطباعة قيم الفاصلة العائمة.

كميزة جديدة تمامًا، أصبحت القيم الحرفية للفاصلة العائمة السداسية العشرية (مثل "0x1.23p-4")
أصبحت مدعومة الآن، ويمكن إخراجها باستخدام "printf "%a"". راجع "منشئو القيمة العددية"
في بيرلداتا لمزيد من التفاصيل.

التغليف انفينتي or ليس رقما إلى a حرف is زيوت ناو مميت
من قبل، عند محاولة تجميع اللانهاية أو عدم وجود رقم في حرف (موقّع)، كان بيرل يفعل ذلك
تحذير، وافترضت أنك حاولت حزم 0xFF؛ إذا أعطيتها كوسيطة لـ "chr"، "U+FFFD"
وقد عاد.

لكن الآن، تؤدي كل هذه الإجراءات ("pack" و"chr" و"print '%c'") إلى خطأ فادح.

تجريبي C المتتبع الخلفي API
يدعم Perl الآن (عبر واجهة برمجة تطبيقات المستوى C) استرداد التتبع الخلفي للمستوى C (على غرار ماذا
مصححات الأخطاء الرمزية مثل gdb تفعل).

يُرجع backtrace تتبع المكدس لإطارات استدعاء C ، مع أسماء الرموز
(أسماء الوظائف)، وأسماء الكائنات (مثل "Perl")، وأيضًا الكود المصدري إذا كان ذلك ممكنًا
المواقع (ملف: سطر).

الأنظمة الأساسية المدعومة هي Linux وOS X (قد تعمل بعض *BSD جزئيًا على الأقل، لكنها
لم يتم اختبارها بعد).

يجب تمكين الميزة من خلال "Configure -Dusecbacktrace".

راجع "C backtrace" في perlhacktips لمزيد من المعلومات.

الأمن


بيرل is زيوت ناو جمعت مع "-fstack-حامي قوي" if متاح
تم تجميع لغة Perl باستخدام خيار مكافحة تحطيم المكدس "-fstack-protector" منذ ذلك الحين
5.10.1. يستخدم Perl الآن الإصدار الأحدث المسمى "-fstack-protector-strong"، إذا كان متاحًا.

ال آمن وحدة استطاع السماح في الخارج بكيج إلى be استبدال
إصلاح الأخطاء الحرجة: يمكن استبدال الحزم الخارجية. لقد تم تصحيح الخزنة إلى 2.38 إلى
معالجة هذا.

بيرل is زيوت ناو دائما جمعت مع "-D_FORTIFY_SOURCE=2" if متاح
خيار "تعزيز التعليمات البرمجية" المسمى "_FORTIFY_SOURCE"، المتوفر في دول مجلس التعاون الخليجي 4.*، متاح الآن دائمًا
تستخدم لتجميع بيرل، إذا كان ذلك متاحا.

لاحظ أن هذه ليست بالضرورة خطوة كبيرة نظرًا لأن هذه الخطوة كانت موجودة بالفعل في العديد من الأنظمة الأساسية
تم التقاطها منذ عدة سنوات: العديد من توزيعات Linux (مثل Fedora) تستخدم هذا
خيار Perl، وقد فرض OS X نفس الشيء لسنوات عديدة.

غير متوافق التغييرات


روتين التوقيعات انتقل قبل سمات
ميزة التوقيعات الفرعية التجريبية، كما تم تقديمها في 5.20، تم تحليل التوقيعات بعد ذلك
صفات. في هذا الإصدار، وبعد تعليقات المستخدمين حول الميزة التجريبية،
تم نقل الموضع بحيث تظهر التوقيعات بعد اسم الروتين الفرعي (if
أي) وقبل قائمة السمات (إن وجدت).

"&" و "\&" نماذج يقبل فقط الغواصات
يقبل الآن الحرف النموذجي "&" فقط الغواصات المجهولة ("sub {...}")، والأشياء
يبدأ بـ "\&" أو "undef" بشكل صريح. في السابق كان مسموحًا به أيضًا بشكل خاطئ
إشارات إلى المصفوفات والتجزئة والقوائم. [بيرل #4539]
. [بيرل #4539]
. [بيرل #123062]
.

بالإضافة إلى ذلك، كان النموذج الأولي "\&" يسمح بالمكالمات الروتينية الفرعية، بينما الآن يسمح بذلك فقط
الإجراءات الفرعية: لا يزال &foo مسموحًا به كوسيطة، في حين لم يعد "&foo()" و"foo()" مسموحًا بهما
نكون. [بيرل #77860] .

"استعمال التشفير" is زيوت ناو معجمي
يقتصر تأثير براغما التشفير الآن على النطاق المعجمي. هذه البراجما مرفوضة
ولكن في هذه الأثناء، يمكن أن يؤثر ذلك سلبًا على الوحدات النمطية غير ذات الصلة المضمنة في
نفس البرنامج هذا التغيير يصلح ذلك.

قائمة شرائح عودة فارغ القوائم
تقوم شرائح القائمة الآن بإرجاع قائمة فارغة فقط إذا كانت القائمة الأصلية فارغة (أو إذا كانت هناك
لا مؤشرات). في السابق، كانت شريحة القائمة تُرجع قائمة فارغة إذا سقطت جميع المؤشرات
خارج القائمة الأصلية؛ الآن تقوم بإرجاع قائمة بالقيم "undef" في هذه الحالة. [بيرل
#114498] .

"\ن{}" مع a تسلسل of متعدد المساحات is زيوت ناو a مميت خطأ
على سبيل المثال "\N{TOO MANY SPACES}" أو "\N{TRAILING SPACE }". لقد تم إهمال هذا منذ ذلك الحين
v5.18.

"استعمال UNIVERSAL "..."" is زيوت ناو a مميت خطأ
لقد تم إهمال استيراد الوظائف من "UNIVERSAL" منذ الإصدار 5.12، وهو الآن أمر فادح
خطأ. "استخدام UNIVERSAL" بدون أية وسائط لا يزال مسموحًا به.

In مزدوج الاقتباس "\جX", X يجب زيوت ناو be a للطباعة ASCII حرف
في الإصدارات السابقة، أدى الفشل في القيام بذلك إلى ظهور تحذير بالإهمال.

شق القادم رموز "(؟" و "(*" in منتظم التعبيرات is زيوت ناو a مميت مجموعة خطأ.
لقد تم إهمالها منذ الإصدار 5.18.

"ريال قطري/فو/س" زيوت ناو يتجاهل الكل يونيكود النمط أبيض الفضاء
يسمح معدّل التعبير العادي "/x" للنمط بأن يحتوي على مسافة بيضاء و
التعليقات (يتم تجاهل كليهما) لتحسين إمكانية القراءة. حتى الآن، ليس كل
تمت معالجة أحرف المسافة البيضاء التي يعينها Unicode لهذا الغرض. ال
تلك الإضافية المعترف بها الآن هي:

U+0085 السطر التالي
علامة U+200E من اليسار إلى اليمين
U + 200F علامة من اليمين إلى اليسار
فاصل الخط U+2028
U+2029 فاصل الفقرات

استخدام هذه الأحرف مع "/x" خارج فئات الأحرف الموجودة بين قوسين وعندما لا يكون ذلك
أثارت الشرطة المائلة العكسية التي يسبقها تحذيرًا بالإهمال منذ الإصدار 5.18. الآن سوف يكونون كذلك
تجاهلها.

كيف خطوط في غضون "(؟[ ])" . زيوت ناو انتهى فقط by a "\ن"
"(?[ ])" هي ميزة تجريبية تم تقديمها في الإصدار 5.18. إنه يعمل كما لو كان "/x".
تمكين دائما. ولكن كان هناك اختلاف: سطور التعليق (التي تتبع الحرف "#")
تم إنهاؤها بأي شيء يطابق "\R" والذي يتضمن كل المسافات البيضاء الرأسية، مثل
يغذي النموذج. من أجل الاتساق، تم تغيير هذا الآن لمطابقة ما ينهي أسطر التعليق
خارج "(؟[ ])"، أي "\n" (حتى لو تم الهروب)، وهو نفس ما ينهي
سلسلة Heredoc والتنسيقات.

"(؟[...])" مشغلي زيوت ناو اتباع معيار بيرل الأولوية
تتيح هذه الميزة التجريبية ضبط العمليات في أنماط التعبير العادي. قبل ذ لك
وبذلك، كان لمشغل التقاطع نفس الأسبقية مثل المشغلين الثنائيين الآخرين.
الآن لديها أسبقية أعلى. قد يؤدي هذا إلى نتائج مختلفة عن التعليمات البرمجية الموجودة
يتوقع (على الرغم من أن الوثائق أشارت دائمًا إلى احتمال حدوث هذا التغيير،
التوصية بوضع أقواس كاملة في التعبيرات). راجع "حرف ممتد بين قوسين
"الفصول" في perlrecharclass.

إغفال "٪" و "@" on مزيج و مجموعة الأسماء is لا يعد مسموح به
تتيح لك لغة Perl القديمة حقًا حذف "@" في أسماء المصفوفات و"%" في أسماء التجزئة في بعضها
بقع. لقد أصدر هذا تحذيرًا بالإهمال منذ إصدار Perl 5.000، ولم يعد كذلك
المسموح بها.

"$!" نص is زيوت ناو in الإنجليزية في الخارج القادم نطاق of "استعمال لغة"
في السابق، كان النص، على عكس كل شيء آخر تقريبًا، يخرج دائمًا بناءً على التيار
اللغة الأساسية للبرنامج. (يتأثر أيضًا في بعض الأنظمة "$^E".) بالنسبة للبرامج
غير المستعدين للتعامل مع الاختلافات المحلية، فقد يؤدي ذلك إلى ظهور نص غير مرغوب فيه
عرض. من الأفضل عرض نص قابل للترجمة عبر بعض الأدوات بدلاً من عرض البيانات المهملة
النص الذي هو أصعب بكثير لمعرفة.

"$!" نص سوف be عاد in UTF-8 متى مناسب
تقييد $! وسيتم تعيين علامة UTF-8 $^E عندما يكون النص فعليًا
غير ASCII UTF-8. سيؤدي هذا إلى تمكين البرامج التي تم إعدادها لتكون على دراية بالإعدادات المحلية بشكل صحيح
إخراج الرسائل باللغة الأصلية للمستخدم. الكود الذي يحتاج إلى مواصلة 5.20 و
يمكن للسلوك السابق أن يقوم بالتقييد ضمن نطاقات كل من "استخدام البايتات" و
"استخدام اللغة ": الرسائل"". لن تكون هناك عمليات بيرل أخرى ضمن هذين النطاقين
تتأثر باللغة. $ فقط! و $^E التوحيد. تتسبب عملية "البايت" في ظهور UTF-8
علامة ليتم عدم تعيينها، تمامًا كما في إصدارات Perl السابقة. يؤدي هذا إلى حل [بيرل #112208]
.

الدعم لـ "؟نمط؟" بدون صريح عامل لديها كان إزالة
"م؟ نمط؟" البناء، الذي يسمح بمطابقة التعبير العادي مرة واحدة فقط، كان يحتوي سابقًا على
النموذج البديل الذي تم كتابته مباشرة باستخدام محدد علامة الاستفهام، مع حذف
مشغل "m" صريح. أنتج هذا الاستخدام تحذيرًا بالإهمال منذ 5.14.0. إنها
الآن هناك خطأ في بناء الجملة، بحيث يمكن استخدام علامة الاستفهام في عوامل التشغيل الجديدة.

"محدد(@صفيف)" و "محدد (% تجزئة)" . زيوت ناو مميت أخطاء
لقد تم إهمالها منذ الإصدار 5.6.1 وأثارت تحذيرات الإيقاف منذ الإصدار 5.16.

باستخدام a مزيج or an مجموعة as a مرجع . زيوت ناو مميت أخطاء
على سبيل المثال، يتسبب "%foo->{"bar"}" الآن في حدوث خطأ فادح في الترجمة. لقد كانت هذه
تم إهمالها منذ ما قبل الإصدار 5.8، وتم رفع تحذيرات الإيقاف منذ ذلك الحين.

التغييرات إلى القادم "*" النموذج
يتم استخدام الحرف "*" في النموذج الأولي للروتين الفرعي للسماح للكلمات المجردة بأن تكون لها الأسبقية
على معظم، ولكن ليس كل، أسماء الروتين الفرعي. لم يكن متسقا أبدا وعرضت عربات التي تجرها الدواب
السلوك.

لقد تم تغييرها الآن، لذا فإن الإجراءات الفرعية تكون لها الأسبقية دائمًا على الكلمات المجردة، والتي
يجعله متوافقًا مع الوظائف المضمنة النموذجية المماثلة:

الضربة الفرعية (*) { ... }
فرعي فو {...}
splat(foo); # الآن دائمًا splat(foo())
splat(bar); # لا يزال يتناثر ('الشريط') كما كان من قبل
إغلاق(فو); # إغلاق (فو ())
إغلاق (شريط)؛ # إغلاق ('شريط')

الإستنكار


الضبط "${^الترميز}" إلى اى شى لكن "undef"
يسمح هذا المتغير بكتابة نصوص Perl بتشفير غير ASCII أو UTF-8.
ومع ذلك، فإنه يؤثر على جميع الوحدات على مستوى العالم، مما يؤدي إلى إجابات خاطئة وتجزئة
فوالق. يجب كتابة النصوص الجديدة بالترميز UTF-8؛ يجب تحويل النصوص القديمة إلى UTF-8،
وهو ما يمكن القيام به بسهولة باستخدام الأداة المساعدة piconv.

استعمل of غير رسومية الأحرف in حرف واحد متغير الأسماء
يعد بناء جملة أسماء المتغيرات ذات الحرف الواحد أكثر تساهلاً من المتغير الأطول
الأسماء، مما يسمح للاسم المكون من حرف واحد أن يكون حرفًا من علامات الترقيم أو حتى غير مرئي (أ
غير رسومية). قام Perl v5.20 بإهمال عناصر التحكم في نطاق ASCII كاسم. الان جميعا
تم إهمال الأحرف غير الرسومية التي كان مسموحًا بها سابقًا. التأثير العملي ل
يحدث هذا فقط عندما لا يكون ضمن "استخدام utf8"، ويؤثر فقط على عناصر التحكم C1 (نقاط الكود
0x80 إلى 0xFF)، بدون مسافة فاصلة، وواصلة ناعمة.

مضمنة of "الفرعية () { فار دولار }" مع يمكن إدراكه الآثار الجانبية
في كثير من الحالات، يقوم بيرل بتحويل "sub () { $var }" إلى روتين فرعي ثابت لا يمكن تعبئته،
التقاط قيمة $var في وقت تقييم التعبير "sub". هذا يمكن أن ينكسر
سلوك الإغلاق في تلك الحالات التي يتم فيها تعديل $var لاحقًا، منذ
لن يقوم الروتين الفرعي بإرجاع القيمة المتغيرة. (لاحظ أن هذا كله ينطبق فقط على المجهولين
إجراءات فرعية ذات نموذج أولي فارغ ("sub ()").)

تم الآن إهمال هذا الاستخدام في الحالات التي يمكن فيها تعديل المتغير
في مكان آخر. يكتشف Perl هذه الحالات ويصدر تحذيرًا بالإهمال. سوف مثل هذا الرمز
من المحتمل أن يتغير في المستقبل ويتوقف عن إنتاج ثابت.

إذا تم تعديل المتغير الخاص بك فقط في المكان الذي تم الإعلان عنه فيه، فسوف يقوم Perl بذلك
استمر في جعل القسم الفرعي غير قابل للتضمين بدون أي تحذيرات.

تكوين فرعي {
$var = Shift;
إرجاع الفرعية () {$var }; # بخير
}

make_constant_deprecated {
بلدي $ فار؛
$var = Shift;
إرجاع الفرعية () {$var }; # إهمال
}

make_constant_deprecated2 {
$var = Shift;
log_that_value($var); # يمكنه تعديل $var
إرجاع الفرعية () {$var }; # إهمال
}

في المثال الثاني أعلاه، من الصعب جدًا اكتشاف تعيين $var لمرة واحدة فقط
يكشف. إن حدوث ذلك في مكان آخر غير الإعلان "الخاص بي" يكفي لبيرل
تجدها مشبوهة.

يحدث تحذير الإهمال هذا فقط لمتغير بسيط لنص القسم الفرعي. (أ
يتم تجاهل كتلة "BEGIN" أو عبارة "use" الموجودة داخل القسم الفرعي، لأنها لا تصبح كذلك
جزء من جسم الغواصة.) في الحالات الأكثر تعقيدًا، مثل
"sub () { do_something() if 0; $var }" تغير السلوك بحيث لا يحدث التضمين
لا يحدث إذا كان المتغير قابلاً للتعديل في مكان آخر. مثل هذه الحالات يجب أن تكون نادرة.

استعمل of متعدد "/س" REGEXP الصفات التعريفية
من المهم الآن قول شيء مثل أي مما يلي:

ريال قطري/فو/XX;
/(?xax:foo)/;
استخدم إعادة qw(/amxx);

وهذا يعني أن "x" يجب أن يظهر مرة واحدة فقط في أي سلسلة من التعبيرات العادية المتجاورة
معدّلات النمط. لا نعتقد أن هناك أي حوادث لهذا في كل CPAN.
يعد هذا استعدادًا لإصدار Perl المستقبلي الذي يسمح بمساحة بيضاء لـ "/xx".
سهولة القراءة في فئات الأحرف بين قوسين (تلك الموجودة بين قوسين مربعين: "[...]").

باستخدام a بدون استراحة الفضاء in a حرف الاسم المستعار لـ "\ن{...}" is زيوت ناو إهمال
لا يمكن تمييز هذا الحرف غير الرسومي بشكل أساسي عن المساحة العادية، وهكذا
لا ينبغي أن يسمح. راجع "الأسماء المستعارة المخصصة" في الأسماء.

A حرفي "{" ينبغي زيوت ناو be هرب in a النمط
إذا كنت تريد قوسًا متعرجًا أيسرًا حرفيًا (يُسمى أيضًا قوسًا أيسرًا) بشكل عادي
نمط التعبير، يجب عليك الآن الهروب منه عن طريق إما أن تسبقه بشرطة مائلة عكسية
("\{") أو وضعها بين قوسين مربعين "[{]"، أو باستخدام "\Q"؛ وإلا أ
سيتم رفع تحذير الإهمال. تم الإعلان عن هذا لأول مرة في الإصدار v5.16
يطلق؛ سيسمح بحدوث امتدادات مستقبلية للغة.

القيام ب الكل تحذيرات مميت is مثبط
تشير وثائق التحذيرات القاتلة إلى أن "استخدام التحذيرات FATAL => 'all'" هو
غير مشجع، ويقدم لغة أقوى حول مخاطر التحذيرات القاتلة بشكل عام.

الأداء التحسينات


· إذا كان اسم الأسلوب أو الفئة معروفًا في وقت الترجمة، فسيتم حساب التجزئة مسبقًا لتسريعها
البحث عن طريقة وقت التشغيل. كما يتم أيضًا تحليل أسماء الطرق المركبة مثل "SUPER::new".
تجميع الوقت، لتوفير الاضطرار إلى تحليلها في وقت التشغيل.

· عمليات البحث عن المصفوفات والتجزئة (خاصة المتداخلة منها) التي تستخدم الثوابت أو البسيطة فقط
المتغيرات كمفاتيح، أصبحت الآن أسرع بكثير. راجع "التغييرات الداخلية" للمزيد
تفاصيل.

· "(...)x1"، "("ثابت")x0" و"($scalar)x0" تم تحسينها الآن في سياق القائمة. لو
الوسيطة اليمنى هي 1 ثابت، ويختفي عامل التكرار. إذا
الوسيطة اليمنى هي 0 ثابت، ويتم تحسين التعبير بالكامل إلى الفراغ
list، طالما أن الوسيطة اليسرى هي عددية بسيطة أو ثابتة. (إنه،
"(foo())x0" لا يخضع لهذا التحسين.)

· تم الآن تحسين مهمة "substr" إلى "substr" مكونة من 4 وسيطات في نهاية
روتين فرعي (أو كوسيطة لـ "العودة"). في السابق، كان هذا التحسين فقط
حدث في سياق فارغ.

· في "\L..."، "\Q..."، وما إلى ذلك، تم الآن تحسين عملية "stringify" الإضافية، مما يجعل
هذه بنفس سرعة "lcfirst" و"quotemeta" وما إلى ذلك.

· أصبح التعيين إلى قائمة فارغة الآن أسرع في بعض الأحيان. على وجه الخصوص، فإنه لا يدعو أبدا
"FETCH" على الوسيطات المرتبطة على الجانب الأيمن، بينما كانت تستخدم في بعض الأحيان.

· هناك تحسن في الأداء يصل إلى 20% عند تطبيق "الطول" على غير
سلسلة سحرية وغير مرتبطة، وإما أن "استخدام البايتات" موجود في النطاق أو أن السلسلة لا تستخدم
UTF-8 داخليًا.

· في معظم إصدارات Perl بأعداد صحيحة 64 بت، يتم استخدام الذاكرة للأشياء غير السحرية وغير المقيدة
تم تقليل القيم القياسية التي تحتوي على قيمة النقطة العائمة فقط بما يتراوح بين 8 و32
بايت، اعتمادا على نظام التشغيل.

· في "@array = Split"، يمكن تحسين المهمة بعيدًا، بحيث تتم كتابة "split".
مباشرة إلى المصفوفة. كان هذا التحسين يحدث فقط لصفائف الحزم الأخرى
من @_، وفي بعض الأحيان فقط. الآن يحدث هذا التحسين طوال الوقت تقريبًا.

· أصبح "الانضمام" الآن خاضعًا للطي المستمر. على سبيل المثال، "الانضمام إلى "-"، "أ"، "ب"" هو
تم تحويله في وقت الترجمة إلى "ab". وعلاوة على ذلك، "الانضمام" مع عددية أو ثابتة ل
تم تبسيط الفاصل وقائمة العناصر المفردة المراد الانضمام إليها إلى عملية تقييد، و
لا يتم حتى تقييم الفاصل.

· يتم تنفيذ "qq(@array)" باستخدام عمليتين: عملية stringify وعملية الانضمام. إذا كان "ف ف"
لا يحتوي على أي شيء سوى مصفوفة واحدة، وقد تم تحسين عملية التوثيق.

· "لدينا $var" و"our($s,@a,%h)" في سياق فارغ لم يعد يتم تقييمهما في وقت التشغيل.
حتى سلسلة كاملة من "our $foo;" سيتم ببساطة تخطي البيانات. نفس الشيء
ينطبق على متغيرات "الحالة".

· تمت إعادة هيكلة العديد من الوظائف الداخلية لتحسين الأداء وتقليلها
آثار أقدام الذاكرة. [بيرل #121436]
[بيرل #121906] [بيرل #121906]


· ستعود اختبارات الملفات "-T" و"-B" عاجلاً عند اكتشاف ملف فارغ. [بيرل
#121489]

· عمليات البحث عن التجزئة حيث يكون المفتاح ثابتًا تكون أسرع.

· أصبحت الآن إجراءات فرعية تحتوي على نموذج أولي فارغ وجسم يحتوي على "غير محدد" فقط
مؤهلة للتضمين. [بيرل #122728]


· لم تعد هناك حاجة إلى تخزين الإجراءات الفرعية الموجودة في الحزم في typeglobs: الإعلان عن a
سوف يقوم الروتين الفرعي الآن بوضع مرجع فرعي بسيط مباشرة في المخبأ إن أمكن،
توفير الذاكرة. لا يزال typeglob موجودًا بشكل افتراضي، لذا فإن الوصول إليه سيؤدي إلى حدوث خطأ
إدخال المخبأ المراد ترقيته إلى typeglob (أي هذا مجرد تنفيذ داخلي
التفاصيل). لا ينطبق هذا التحسين حاليًا على XSUBs أو الإجراءات الفرعية المصدرة،
وستقوم استدعاءات الطريقة بالتراجع عن ذلك، نظرًا لأنها تقوم بتخزين الأشياء مؤقتًا في typeglobs. [بيرل #120441]


· الدالتان "utf8::native_to_unicode()" و"utf8::unicode_to_native()" (راجع utf8)
تم تحسينها الآن على منصات ASCII. لا يوجد الآن حتى الحد الأدنى من الأداء
نجح في كتابة التعليمات البرمجية المحمولة بين منصات ASCII وEBCDIC.

· يستخدم Win32 Perl 8 كيلو بايت من الذاكرة لكل عملية أقل من ذي قبل لكل عملية بيرل،
لأن بعض البيانات يتم الآن تعيينها من الذاكرة من القرص ومشاركتها بين العمليات من
نفس بيرل الثنائي.

الأقسام و براغماتا


تحديث الأقسام و براغماتا
تمت ترقية العديد من المكتبات الموزعة باستخدام لغة Perl منذ الإصدار 5.20.0. ل
القائمة الكاملة للتغييرات، قم بتشغيل:

القائمة الأساسية --diff 5.20.0 5.22.0

يمكنك استبدال الإصدار المفضل لديك بدلاً من 5.20.0 أيضًا.

بعض التغييرات الملحوظة تشمل:

· الأرشيف::تم ترقية القطران إلى الإصدار 2.04.

يمكن الآن إجراء الاختبارات بالتوازي.

· تمت ترقية السمات إلى الإصدار 0.27.

تم تصحيح استخدام "memEQs" في XS. [بيرل #122701]


تجنب القراءة بعد نهاية المخزن المؤقت. [بيرل #122629]

· تمت ترقية B إلى الإصدار 1.58.

يوفر وظيفة "B::safename" جديدة، استنادًا إلى "B::GV->SAFENAME" الموجودة،
الذي يحول "\cOPEN" إلى "^OPEN".

أصبحت COPs الفارغة الآن من الفئة "B::COP"، بدلاً من "B::OP".

توفر كائنات "B::REGEXP" الآن طريقة "qr_anoncv" للوصول إلى السيرة الذاتية الضمنية
المرتبطة بالأشياء "qr//" التي تحتوي على كتل التعليمات البرمجية، وطريقة "compflags" التي
تقوم بإرجاع العلامات ذات الصلة التي تنشأ من المرجع "qr//blahblah".

يوفر "B::PMOP" الآن أسلوب "pmregexp" الذي يُرجع كائن "B::REGEXP". اثنان جديدان
تم تقديم الفئات "B::PADNAME" و"B::PADNAMELIST".

خطأ حيث، بعد إنشاء thread أو psuedofork، تظهر ملفات SV خاصة/خالدة في
لم يكن لدى الطفل ithread/psuedoprocess الفئة الصحيحة لـ "B::SPECIAL".
مُثَبَّت. تمت إضافة أساليب PADLIST "id" و"outid".

· ب::موجز تمت ترقيته إلى الإصدار 0.996.

يتم الآن إعطاء العمليات الفارغة التي تعد جزءًا من سلسلة التنفيذ أرقامًا تسلسلية.

يتم الآن التخلص من العلامات الخاصة للعمليات الفارغة باستخدام أساليب الإستذكار كما هو الحال بالنسبة لـ
نظيراتها غير الفارغة.

· ب :: Deparse تمت ترقيته إلى الإصدار 1.35.

وهو الآن يفصل "+sub : attr { ... }" بشكل صحيح في بداية العبارة. بدون
سيكون "+" و"sub" الأولي عبارة عن تسمية بيان.

يتم الآن إطلاق كتل "البدء" في المكان الصحيح في معظم الأوقات، ولكن التغيير
لسوء الحظ، قدم انحدارًا، حيث حدثت كتل "BEGIN" قبل ذلك مباشرة
قد تظهر نهاية الكتلة المرفقة أسفلها بدلاً من ذلك.

"B::Deparse" لم يعد يضع "محليًا" خاطئًا هنا وهناك، مثل "LIST ="
آر/أ//د". [بيرل #119815]

لم تعد عبارات "الاستخدام" المتجاورة متداخلة عن طريق الخطأ إذا كانت إحداها تحتوي على "do"
حاجز. [بيرل #115066]

تم الآن فصل المصفوفات الموجودة بين قوسين في القوائم التي تم تمريرها إلى "\" بشكل صحيح
بين قوسين (على سبيل المثال، "\(@a, (@b), @c)" يحتفظ الآن بالأقواس حول @b)، وبالتالي
الحفاظ على سلوك التسطيح للصفائف بين قوسين المشار إليها. سابقا، عليه
عملت فقط مع مجموعة واحدة: "\(@a)".

تم الآن فصل "المحلي الخاص بنا" بشكل صحيح، مع تضمين "لدينا".

"for($foo; !$bar; $baz) {...}" تم حذفه بدون "!" (أم لا"). لقد كان هذا
ثابتة.

يتم الآن حذف الكلمات الأساسية الأساسية التي تتعارض مع الإجراءات الفرعية المعجمية باستخدام الامتداد
"الأساسية::" البادئة.

يتم الآن فصل "حالة foreach $x (...) {...}" بشكل صحيح باستخدام "state" وليس "my".

"@array = Split(...)" ينقسم الآن بشكل صحيح مع "our" في تلك الحالات التي يكون فيها
تم تحسين المهمة بعيدًا.

إنه يغادر الآن "لدينا (قائمة)" وقمت بكتابة المعجم ("my Dog $spot") بشكل صحيح.

افصل $#_ بهذا الشكل بدلاً من $#{_}. [بيرل #123947]


يتم الآن فصل كتل BEGIN الموجودة في نهاية النطاق المتضمن في المكان المناسب.
[بيرل #77452]

تم أحيانًا فصل كتل BEGIN باسم __ANON__، ولكنها الآن تسمى BEGIN دائمًا.

تم الآن إلغاء الإجراءات الفرعية المعجمية بالكامل. [بيرل #116553]

"Anything =~ y///r" مع "/r" لم يعد يحذف المعامل الأيسر.

لقد تم الآن حذف أشجار العمليات التي تشكل كتل التعليمات البرمجية regexp بشكل حقيقي. سابقا،
تم استخدام السلسلة الأصلية التي تتكون من التعبير العادي. تسبب ذلك في مشاكل
مع "qr/(?{<
[بيرل #123217] [بيرل #115256]

$; في نهاية العبارة لم يعد يفقد الفاصلة المنقوطة. [بيرل #123357]

كانت بعض حالات الإعلانات الروتينية المخزنة في المخبأ في شكل مختصر
محذوف.

يتم الآن تخطي الأحرف غير ASCII باستمرار في السلاسل، بدلاً من بعض الأحرف
وقت. (لا تزال هناك مشكلات معلقة تتعلق بالتعبيرات العادية والمعرفات
التي لم يتم إصلاحها.)

عندما يتم إلغاء الاستدعاءات الفرعية للنموذج الأولي باستخدام "&" (على سبيل المثال تحت -P الخيار)، "العددية"
تتم إضافتها الآن عند الاقتضاء، لفرض السياق العددي الذي يتضمنه النموذج الأولي.

"require(foo())" و"do(foo())" و"goto(foo())" والإنشاءات المشابهة مع عناصر التحكم في الحلقة
يتم الآن deparsed بشكل صحيح. الأقواس الخارجية ليست اختيارية.

لم يعد يتم الهروب من المسافات البيضاء في التعبيرات العادية، لأنها أصبحت
تم الهروب بشكل خاطئ من الأقسام "(؟x:...)".

تم الآن حذف "sub foo { foo() }" باستخدام تلك الأقواس الإلزامية.

تم الآن حذف "/@array/" كتعبير عادي، وليس @array فقط.

تم الآن فصل "/@{-}/"، و"/@{+}/" و$#{1} باستخدام الأقواس، وهي إلزامية في
هذه الحالات.

في إزالة حزم الميزات، كان "B::Deparse" يصدر "no feature;" الأول بدلا من
"لا توجد ميزة ':الكل'؛". لقد تم إصلاح هذا.

تم الآن فصل "chdir FH" بدون علامات الاقتباس.

تم الآن فصل "\my@a" بدون أقواس. (الأقواس ستؤدي إلى تسوية المصفوفة.)

تم الآن تحليل "النظام" و"exec" متبوعًا بالكتلة بشكل صحيح. هناك سابقا
كان "فعل" خاطئًا قبل الحظر.

"استخدام ثابت QR => qr/.../flags" متبوعًا بـ """ =~ QR" لم يعد بدون
الأعلام.

حذف "BEGIN { undef &foo }" باستخدام ملف -w بدأ التبديل تمكين لتنبعث منها
تحذيرات "غير مهيأة" في Perl 5.14. لقد تم إصلاح هذا.

أدى إلغاء المكالمات إلى الغواصات باستخدام النموذج الأولي "(؛+)" إلى حلقة لا نهائية. ال
"(;$") "(_)" و"(;_)" تم إعطاء الأولوية الخاطئة للنماذج الأولية، مما تسبب في
سيتم فصل "foo($a<$b)" بدون الأقواس.

يوفر Deparse الآن حالة فرعية محددة في الغواصات الداخلية.

· ب :: تمت إضافة Op_private.

B::Op_private يوفر معلومات تفصيلية حول العلامات المستخدمة في "op_private"
مجال أكواد تشغيل بيرل.

· تمت ترقية bigint، bignum، bigrat إلى الإصدار 0.39.

قم بتوثيق CAVEATS بأن استخدام السلاسل كأرقام لن يؤدي دائمًا إلى استدعاء الرقم الكبير
التحميل الزائد وكيفية تفعيله. [rt.perl.org #123064]

· تمت ترقية الكارب إلى الإصدار 1.36.

يتجاهل "Carp::Heavy" الآن عدم تطابق الإصدار مع Carp إذا كان Carp أحدث من 1.12،
منذ أن تم دمج أحشاء "Carp::Heavy" في Carp في تلك المرحلة. [بيرل #121574]


يتعامل Carp الآن مع الأنظمة الأساسية غير ASCII بشكل أفضل.

إصلاح خطأ متقطع لـ Perl <5.14.

· تمت ترقية الثابت إلى الإصدار 1.33.

وهو يقبل الآن أسماء ثابتة مؤهلة بالكامل، مما يسمح بتعريف الثوابت فيها
حزم أخرى غير المتصل.

· تمت ترقية CPAN إلى الإصدار 2.11.

أضف دعمًا لـ "Cwd::getdcwd()" وقدم حلاً بديلاً لسوء السلوك الذي شوهد على
الفراولة بيرل 5.20.1.

أصلح "chdir()" بعد خطأ بناء التبعيات.

تقديم الدعم التجريبي للمكونات الإضافية/الخطافات.

دمج مصادر "App::Cpan".

لا تتحقق من العودية على التبعيات الاختيارية.

الاختيار التعقل ميتايمل لاحتواء التجزئة. [سي بان #95271]


· CPAN::Meta::تمت ترقية المتطلبات إلى الإصدار 2.132.

يعمل على التغلب على القيود الموجودة في "version::vpp" الذي يكتشف سحر v-string ويضيف الدعم
من أجل ExtUtils القادمة::MakeMaker bootstrap version.pm لبيرل الأقدم من 5.10.0.

· البيانات::Dumper تمت ترقيته إلى الإصدار 2.158.

يعمل على إصلاح CVE-2014-4330 عن طريق إضافة متغير/خيار التكوين للحد من التكرار عندما
التخلص من هياكل البيانات العميقة.

تغييرات لحل مشكلات التغطية. قام مقالب XS بتخزين اسم التعليمات البرمجية بشكل غير صحيح
المراجع المخزنة في GLOB. [بيرل #122070]


· تمت ترقية DynaLoader إلى الإصدار 1.32.

قم بإزالة "dl_nonlazy" الشامل إذا لم يتم استخدامه في Dynaloader. [بيرل #122926]

· ترميز تمت ترقيته إلى الإصدار 2.72.

يتمتع "piconv" الآن بمعالجة أفضل للأخطاء عندما يكون اسم التشفير غير موجود، و
تم إصلاح تعطل البناء عند ترقية Encode في Perl-5.8.2 والإصدارات الأقدم.

يعمل الآن البناء في وضع C++ على نظام التشغيل Windows.

· تمت ترقية Errno إلى الإصدار 1.23.

أضف "-P" إلى سطر أوامر المعالج المسبق في إصدار دول مجلس التعاون الخليجي 5. أضاف مجلس التعاون الخليجي توجيهات سطر إضافية،
كسر تحليل تعريفات رمز الخطأ. [rt.perl.org #123784]

· تمت ترقية الإصدار التجريبي إلى الإصدار 0.013.

ميزات الأكواد الثابتة لـ Perls الأقدم من 5.15.7.

· ExtUtils::CBuilder تمت ترقيته إلى الإصدار 0.280221.

يعمل على إصلاح الانحدار على Android. [بيرل #122675]


· ExtUtils::Manifest تمت ترقيته إلى الإصدار 1.70.

إصلاح الخلل في معالجة "maniread()" لأسماء الملفات المقتبسة وتحسين "manifind()"
لمتابعة الروابط الرمزية. [بيرل #122415]


· ExtUtils::ParseXS تمت ترقيته إلى الإصدار 3.28.

قم بإعلان "الملف" غير مستخدم فقط إذا قمنا بتعريفه بالفعل. تحسين كود "RETVAL" الذي تم إنشاؤه
جيل لتجنب الإشارات المتكررة إلى ST(0). [Perl #123278] قم بالتوسيع والتوثيق
تحسين مخطط الكتابة من "/OBJ$/" إلى "/REF$/" للأسلوب "DESTROY". [بيرل
# 123418]

· تمت ترقية Fcntl إلى الإصدار 1.13.

إضافة دعم لأوامر حجم المخزن المؤقت لـ Linux "fcntl()".

· الملف::Find تمت ترقيته إلى الإصدار 1.29.

سيتم الآن تحذير "find()" و"finddegree()" إذا تم تمريره بشكل غير مناسب أو به خطأ إملائي
خيارات.

· الملف::Glob تمت ترقيته إلى الإصدار 1.24.

تجنب توسيع "SvIV()" لاستدعاء "get_sv()" ثلاث مرات في أماكن قليلة. [بيرل
# 123606]

· HTTP::Tiny تمت ترقيته إلى الإصدار 0.054.

أصبح "keep_alive" الآن آمنًا للشوكة وآمنًا للخيوط.

· تمت ترقية IO إلى الإصدار 1.35.

تم إصلاح تطبيق XS من أجل Perls الأقدم.

· IO::Socket تمت ترقيته إلى الإصدار 1.38.

قم بتوثيق قيود طريقة "connected()". [بيرل #123096]

· IO::Socket::IP تمت ترقيته إلى الإصدار 0.37.

حل أفضل للفئة الفرعية "connect()". [سي بان #95983]
[سي بان #95983]


ينفذ المهلة لـ "connect()". [سي بان #92075]


· تمت ترقية مجموعة وحدات libnet إلى الإصدار 3.05.

دعم IPv6 وSSL إلى "Net::FTP" و"Net::NNTP" و"Net::POP3" و"Net::SMTP".
تحسينات في مصادقة "Net::SMTP".

· اللغة::تم ترقية الرموز إلى الإصدار 3.34.

تم إصلاح الخلل في البرامج النصية المستخدمة لاستخراج البيانات من جداول البيانات والتي كانت تمنع
تم العثور على رمز العملة SHP. [سي بان #94229]


تمت إضافة رموز جديدة.

· الرياضيات :: BigInt تمت ترقيته إلى الإصدار 1.9997.

مزامنة تغييرات POD من إصدار CPAN. "Math::BigFloat->blog(x)" سيكون
في بعض الأحيان يتم إرجاع "blog(2*x)" عندما تكون الدقة أكبر من 70 رقمًا. النتائج
من "Math::BigFloat->bdiv()" في سياق القائمة يرضي الآن "x = quotient * divisor +"
بقية".

التعامل الصحيح مع الفئات الفرعية. [سي بان #96254]
[سي بان #96254]


· الوحدة::تم ترقية بيانات التعريف إلى الإصدار 1.000026.

دعم عمليات التثبيت على Perls الأقدم باستخدام ExtUtils::MakeMaker الأقدم من 6.63_03

· تمت ترقية التحميل الزائد إلى الإصدار 1.26.

تمت إزالة الاختيار "ref $sub" الزائد.

· تم ترقية مجموعة وحدات PathTools إلى الإصدار 3.56.

تحذير من دول مجلس التعاون الخليجي يتم الآن تجنب المترجم عند إنشاء XS.

لا تحول المسافة البادئة "//" إلى "/" في Cygwin. [بيرل #122635]

· تمت ترقية perl5db.pl إلى الإصدار 1.49.

قد يتسبب مصحح الأخطاء في فشل التأكيد. [بيرل #124127]


سيؤدي "fork()" في مصحح الأخطاء ضمن "tmux" الآن إلى إنشاء نافذة جديدة للشوكة
عملية. [بيرل #121333]

يقوم مصحح الأخطاء الآن بحفظ دليل العمل الحالي عند بدء التشغيل واستعادته عند بدء التشغيل
تقوم بإعادة تشغيل البرنامج باستخدام "R" أو "rerun". [بيرل #121509]


· PerlIO::scalar تمت ترقيته إلى الإصدار 0.22.

القراءة من موضع بعد نهاية العددية تُرجع الآن نهاية العدد بشكل صحيح
ملف. [بيرل #123443]

لا يزال البحث عن موضع سلبي يفشل، ولكنه لم يعد يترك موضع الملف مضبوطًا
إلى موضع النفي.

"eof()" على مقبض "PerlIO::scalar" يُرجع الآن صحيحًا بشكل صحيح عندما يكون موضع الملف
تجاوز علامة 2 جيجابايت على أنظمة 32 بت.

محاولة الكتابة في مواضع الملفات المستحيلة على النظام الأساسي تفشل الآن مبكرًا
بدلا من التفاف في 4GB.

· Pod::Perldoc تمت ترقيته إلى الإصدار 3.25.

تحتوي الآن معالجات الملفات المفتوحة للقراءة أو الكتابة على مجموعة ":encoding(UTF-8)". [cpan
#98019]

· تمت ترقية POSIX إلى الإصدار 1.53.

وظائف وثوابت الرياضيات C99 (على سبيل المثال "acosh"، "isinf"، "isnan"، "round"،
"جذع"؛ تمت إضافة "M_E"، "M_SQRT2"، "M_PI").

يُنتج الآن "POSIX::tmpnam()" تحذيرًا بالإهمال. [بيرل #122005]

· تمت ترقية Safe إلى الإصدار 2.39.

لم يكن "reval" ينشر السياق الفارغ بشكل صحيح.

· Scalar-List-Utils تمت ترقيته إلى الإصدار 1.41.

تمت إضافة وحدة نمطية جديدة، Sub::Util، تحتوي على وظائف متعلقة بمراجع CODE،
بما في ذلك "الاسم الفرعي" (مستوحى من "Sub::Identity") و"set_subname" (المنسوخ و
تمت إعادة تسميته من "Sub::Name"). تم استخدام "GetMagic" في "List::Util::reduce()" أيضًا
تم إصلاحها. [سي بان #63211]

· تمت ترقية SDBM_File إلى الإصدار 1.13.

تبسيط عملية البناء. [بيرل #123413]

· الوقت::تم ترقية القطعة إلى الإصدار 1.29.

عند طباعة "Time::Seconds" سالبة جدًا، لم تعد علامة "الطرح" مفقودة.

· Unicode::Collate تمت ترقيته إلى الإصدار 1.12.

تم إبطال التقلصات غير المتقاربة المحسنة للإصدار 0.67 افتراضيًا وهي كذلك
مدعوم كمعلمة "long_contraction".

· Unicode::Normalize تمت ترقيته إلى الإصدار 1.18.

تمت إزالة تطبيق XSUB لصالح لغة Perl النقية.

· Unicode::UCD تمت ترقيته إلى الإصدار 0.61.

وظيفة جديدة قيم_الخاصية() تمت إضافته لإرجاع خاصية معينة ممكنة
القيم.

وظيفة جديدة شاربروب () تمت إضافته لإرجاع قيمة خاصية معينة لـ a
نقطة رمز معينة.

وظيفة جديدة charprops_all() تمت إضافته لإرجاع قيم كافة Unicode
خصائص نقطة رمز معينة.

تم إصلاح الخلل بحيث بروبالياسيس () إرجاع الأسماء القصيرة والطويلة الصحيحة
لامتدادات Perl حيث كانت غير صحيحة.

تم إصلاح الخلل بحيث Prop_value_aliases() تُرجع "undef" بدلاً من الخطأ
نتيجة للخصائص التي هي امتدادات بيرل.

تعمل هذه الوحدة الآن على منصات 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 بتحميل الوحدات من مساحة اسم مختلفة. [بيرل #122455]

إزالة الأقسام و براغماتا
تمت إزالة الوحدات التالية (والوحدات المرتبطة بها) من Perl الأساسي
توزيع:

· المجموعة الاستشارية لاندونيسيا

· الوحدة::Build

توثيق


جديد توثيق
com.perlunicook

يقدم هذا المستند، الذي أعده توم كريستيانسن، أمثلة على التعامل مع Unicode في لغة Perl.

التغييرات إلى موجود توثيق
بيرليكس

· تمت إضافة ملاحظة على الزوجي الطويل.

بيرلابي

· لاحظ أن "SvSetSV" لا يقوم بعمل السحر.

· "sv_usepvn_flags" - إصلاح الوثائق التي تشير إلى استخدام "Newx" بدلاً من ذلك
"مالوك".

[بيرل #121869]

· توضيح أين قد يكون "NUL" مضمنًا أو مطلوبًا لإنهاء السلسلة.

· بعض الوثائق التي كانت مفقودة في السابق بسبب أخطاء التنسيق أصبحت الآن
وشملت.

· يتم الآن تنظيم الإدخالات في مجموعات بدلاً من الملف الذي تم العثور عليها فيه.

· يتم الآن فرز الإدخالات أبجديًا بشكل متسق (تلقائيًا بواسطة POD
generator) لتسهيل العثور على الإدخالات عند المسح الضوئي.

com.perldata

· تم تحديث صيغة أسماء المتغيرات ذات الحرف الواحد والمزيد
شرح كامل.

· تم وصف أرقام الفاصلة العائمة السداسية العشرية، وكذلك اللانهاية وNaN.

com.perlebcdic

· تم تحديث هذه الوثيقة بشكل كبير في ضوء التحسينات الأخيرة التي تم إجراؤها
دعم EBCDIC.

بيرلفيلتر

· أضيفت قسم القيود.

com.perlfunc

· أذكر أن "study()" محظور حاليًا.

· يتم الآن وصف استدعاء "حذف" أو "موجود" على قيم المصفوفة بأنه "بقوة".
"مثبط" بدلاً من "مهمل".

· تحسين توثيق "لدينا".

· يشير "-l" الآن إلى أنه سيعود خطأً إذا كانت الارتباطات الرمزية غير مدعومة بالملف
نظام. [بيرل #121523]

· لاحظ أن "قائمة exec" و"قائمة النظام" قد ترجع إلى نظام التشغيل Win32. فقط
بناء جملة الكائن غير المباشر "قائمة برامج exec" و"قائمة برامج النظام" سيتم بشكل موثوق
تجنب استخدام القشرة.

وقد تمت الإشارة إلى هذا أيضًا في perlport.

[بيرل #122046]

perlguts

· تم تحديث مثال OOK لمراعاة تغييرات COW والتغيير في
تخزين الإزاحة.

· تفاصيل عن رموز المستوى C و libperl.t المضافة.

· تمت إضافة معلومات حول التعامل مع Unicode

· تمت إضافة معلومات حول التعامل مع EBCDIC

com.perlhack

· تمت إضافة ملاحظة حول التشغيل على الأنظمة الأساسية التي تحتوي على مجموعات أحرف غير ASCII

· تمت إضافة ملاحظة حول اختبار الأداء

com.perlhacktips

· تمت إضافة وثائق توضح مخاطر افتراض عدم وجود ذلك
التغيير إلى محتويات الذاكرة الثابتة التي تشير إليها قيم الإرجاع الخاصة بـ Perl
أغلفة لوظائف مكتبة C.

· يوصى الآن باستخدام بدائل "tmpfile"، و"atoi"، و"strtol"، و"strtoul".

· تحديث الوثائق الخاصة بالهدف "test.valgrind". [بيرل #121431]


· يتم تقديم معلومات حول كتابة ملفات الاختبار بشكل محمول إلى منصات غير ASCII.

· تمت إضافة ملاحظة حول كيفية الحصول على التتبع الخلفي لمكدس لغة C.

com.perlhpux

· لاحظ أن الرسالة "إعادة تعريف" مسار الإرسال "بفئة تخزين مختلفة
المحدد" غير ضار.

perlocale

· تم التحديث للتحسينات في الإصدار 5.22، مع بعض التوضيحات.

com.perlmodstyle

· بدلاً من الإشارة إلى قائمة الوحدات، فإننا نشير الآن إلى PrePAN
<http://prepan.org/>.

بيرلوب

· تم التحديث للتحسينات في الإصدار 5.22، مع بعض التوضيحات.

بيرلبودسبيك

· تتغير مواصفات لغة البود بحيث يصبح التشفير الافتراضي للبودات
غير الموجودة في UTF-8 (ما لم يُذكر خلاف ذلك) هي CP1252 بدلاً من ISO 8859-1
(لاتينية 1).

com.perlpolicy

· لدينا الآن مدونة سلوك لـ p5p القائمة البريدية، كما هو موثق في "معايير
السلوك" في السياسة.

· تم الآن تحديد شروط وضع علامة على الميزة التجريبية على أنها غير تجريبية
خارج.

· تم توضيح أنواع التغييرات المسموح بها في الصيانة
إطلاق.

com.perlport

· تم إصلاح و/أو تبسيط المعلومات القديمة الخاصة بنظام VMS.

· تمت إضافة ملاحظات حول EBCDIC.

بيرل

· تم توضيح وصف المُعدِّل "/x" لملاحظة أنه لا يمكن التعليق عليه
يستمر إلى السطر التالي بالهروب منهم؛ وهناك الآن قائمة بجميع
الأحرف التي تعتبر مسافة بيضاء بواسطة هذا المعدل.

· تم وصف معدل "/n" الجديد.

· تمت إضافة ملاحظة حول كيفية جعل نطاقات فئة الأحرف بين قوسين قابلة للنقل إلى غير
آلات أسكي.

com.perlrebackslash

· تمت إضافة وثائق "\b{sb}"، و"\b{wb}"، و"\b{gcb}"، و"\b{g}".

com.perlrecharclass

· تمت إضافة توضيحات إلى "نطاقات الأحرف" في perlrecharclass للتأثير
"[AZ]"، "[az]"، "[0-9]" وأي نطاقات فرعية منها في التعبير العادي بين قوسين
فئات الشخصيات مضمونة لتتوافق تمامًا مع ما قد يفعله متحدث اللغة الإنجليزية الساذج
توقع أن تتطابق، حتى على الأنظمة الأساسية (مثل EBCDIC) حيث يتعين على Perl القيام بالمزيد
العمل لتحقيق ذلك.

· تم توسيع توثيق فئات الأحرف بين قوسين ليشمل
تحسينات في "qr/[\N{namedتسلسل}]/" (انظر ضمن "إصلاحات الأخطاء المحددة").

perlref

· تمت إضافة قسم جديد مخصص للمراجع

بيرلسيك

· التعليقات المضافة على التعقيد الخوارزمي والتجزئة المرتبطة.

بيرلسين

· تم تصحيح الغموض في توثيق عبارة "...". [بيرل
#122661]

· تم الآن توثيق الشرط الفارغ في "for" و"while" في لغة perlsyn.

بيرلونيكود

· لقد تمت تنقيحات واسعة النطاق لتحديثه مع دعم Unicode الحالي
ولجعلها أكثر قابلية للقراءة. ومن الجدير بالذكر أن Unicode 7.0 غيّر ما يجب أن يفعله
مع غير الشخصيات. تحتفظ لغة Perl بالطريقة القديمة في التعامل لأسباب متخلفة
التوافق. راجع "نقاط التعليمات البرمجية غير الأحرف" في perlunicode.

com.perluniintro

· نصيحة حول كيفية التأكد من صحة سلاسلك وأنماط التعبير العادية
تم تفسيره على أنه تم تحديث Unicode.

com.perlvar

· لم يعد $] مدرجًا على أنه مهمل. بدلا من ذلك، تمت إضافة المناقشة على
مزايا وعيوب استخدامه مقابل $^V. تمت إعادة إضافة $OLD_PERL_VERSION
إلى الوثائق بالصيغة الطويلة لـ $].

· تم الآن وضع علامة على "${^ENCODING}" على أنها مهملة.

· تم توضيح الإدخال الخاص بـ "%^H" للإشارة إلى أنه يمكنه التعامل مع القيم البسيطة فقط.

com.perlvms

· تمت إزالة المواد القديمة و/أو غير الصحيحة.

· تحديث الوثائق المتعلقة بالبيئة والتفاعل مع نظام إدارة السفن (VMS).

perlxs

· أضيفت مناقشة للقضايا المحلية في رمز XS.

التشخيص


تم إجراء الإضافات أو التغييرات التالية على مخرجات التشخيص، بما في ذلك التحذيرات
ورسائل خطأ فادح. للحصول على قائمة كاملة برسائل التشخيص ، انظر perldiag.

جديد التشخيص
جديد أخطاء

· رمز سيء للعددية

(P) طُلب طلب داخلي لإضافة إدخال عددي إلى شيء لم يكن رمزًا
دخول الجدول.

· لا يمكن استخدام التجزئة كمرجع

(F) لقد حاولت استخدام التجزئة كمرجع، كما في "%foo->{"bar"}" أو
"%$ref->{"مرحبًا"}". تم استخدام إصدارات Perl <= 5.6.1 للسماح ببناء الجملة هذا، ولكن
لا ينبغي أن يكون.

· لا يمكن استخدام المصفوفة كمرجع

(F) لقد حاولت استخدام مصفوفة كمرجع، كما في "@foo->[23]" أو "@$ref->[99]".
تُستخدم إصدارات Perl <= 5.6.1 للسماح بهذه الصيغة، ولكن لا ينبغي أن تكون كذلك.

· لا يمكن استخدام "محدد(@array)" (ربما يجب عليك حذف مُعرف()?)

(F) "محدد ()" ليس مفيدًا في المصفوفات لأنه يتحقق من وجود غير محدد العددية
قيمة. إذا كنت تريد معرفة ما إذا كانت المصفوفة فارغة، فما عليك سوى استخدام
"إذا (@array) { # ليس فارغًا }" على سبيل المثال.

· لا يمكن استخدام "محدد(%hash)" (ربما يجب عليك حذف مُعرف()?)

(F) "محدد ()" ليس عادةً صحيحًا في التجزئة.

على الرغم من أن "%hash المحدد" يكون خطأ في تجزئة عادية لم يتم استخدامها بعد، إلا أنه يصبح صحيحًا في
العديد من الظروف غير الواضحة، بما في ذلك التكرارات، والمراجع الضعيفة، وأسماء المخبأة،
حتى تظل صحيحة بعد "Undef %hash". هذه الأشياء تجعل "%hash محددًا" إلى حد ما
عديمة الفائدة من الناحية العملية، لذا فهي الآن تولد خطأً فادحًا.

إذا كان الاختيار غير الفارغ هو ما تريده، فما عليك سوى وضعه في سياق منطقي (انظر
"القيم العددية" في perldata):

إذا (٪ التجزئة) {
#ليست فارغة
}

إذا قمت "بتعريف %Foo::Bar::QUUX" للتحقق من وجود متغير الحزمة هذا
فهذا لم يكن موثوقًا به أبدًا، ولا يمثل طريقة جيدة للاستفسار عن
ميزات الحزمة، أو ما إذا كانت محملة، وما إلى ذلك.

· لا يمكن حقوق الإنسان %f

(F) لقد قمت بتمرير رقم غير صالح (مثل اللانهاية أو ليس رقمًا) إلى "chr".

· لا يمكن ضغط %f في الحزمة

(F) لقد حاولت تحويل ما لا نهاية أو ليس رقمًا إلى حرف غير موقع، وهو ما
لا معنى له.

· لا يمكن حزم %f مع '%c'

(F) لقد حاولت تحويل ما لا نهاية أو ليس رقمًا إلى حرف، مما يجعل لا
معنى.

· لا يمكن طباعة %f مع '%c'

(F) لقد حاولت طباعة ما لا نهاية أو ليس رقمًا كحرف (%c)، مما يجعل لا
حاسة. ربما كنت تقصد '%s'، أو مجرد تقييدها؟

· لا يجوز لتعريفات الأسماء المستعارة أن تحتوي على سلسلة من المسافات المتعددة

(F) لقد قمت بتحديد اسم حرف يحتوي على أحرف مسافات متعددة في صف واحد. يتغير
لهم إلى مساحات واحدة. عادةً ما يتم تعريف هذه الأسماء في استيراد ": الاسم المستعار".
وسيطة "لاستخدام أسماء الأحرف"، ولكن يمكن تعريفها بواسطة مترجم مثبت عليها
$^H{الأسماء}. راجع "الأسماء المستعارة المخصصة" في الأسماء.

· لا يجوز أن تحتوي تعريفات الأسماء المستعارة على مسافة بيضاء زائدة

(F) لقد حددت اسم حرف ينتهي بحرف مسافة. مسح ال
مسافات زائدة). عادةً ما يتم تعريف هذه الأسماء في وسيطة الاستيراد ":alias" إلى
"استخدام الأحرف"، ولكن يمكن تعريفها بواسطة مترجم مثبت في
$^H{الأسماء}. راجع "الأسماء المستعارة المخصصة" في الأسماء.

· :const غير مسموح به في الإجراءات الفرعية المسماة

(F) تؤدي السمة "const" إلى تشغيل روتين فرعي مجهول وقيمته
تم التقاطها في وقت استنساخها. لا يتم استنساخ الإجراءات الفرعية المسماة بهذه الطريقة،
فلا يكون للصفة معنى عليهم.

· التعويم الست عشري: خطأ داخلي

(F) حدث شيء سيئ للغاية في التعامل مع التعويم السداسي العشري.

· تعويم سداسي عشري: تنسيق مزدوج طويل غير معتمد

(F) لقد قمت بتكوين Perl لاستخدام الزوجي الطويل ولكن الأجزاء الداخلية من الزوجي الطويل
التنسيق غير معروف، وبالتالي فإن إخراج التعويم السداسي العشري مستحيل.

· suidscript غير قانوني

(F) كان البرنامج النصي الذي تم تشغيله تحت suidperl غير قانوني إلى حد ما.

· في '(؟...)'، يجب أن يكون '(' و'؟' متجاورين في التعبير العادي؛ مع وضع علامة <-- هنا في m/%s/

(F) التسلسل المكون من حرفين "(؟" في هذا السياق في نمط التعبير العادي
يجب أن يكون رمزًا غير قابل للتجزئة، دون أي تداخل بين "(" و"؟")،
لكنك فصلت بينهما.

· في '(*VERB...)'، يجب أن يكون '(' و'*' متجاورين في التعبير العادي؛ مع وضع علامة <-- هنا في
آنسة/

(F) التسلسل المكون من حرفين "(*" في هذا السياق في نمط التعبير العادي
يجب أن يكون رمزًا مميزًا غير قابل للتجزئة، دون أي تداخل بين "(" و"*"،
لكنك فصلت بينهما.

· المُحدِّد الكمي غير صالح في {,} في التعبير العادي؛ تم وضع علامة <-- هنا في m/%s/

(F) يبدو النمط كمحدد كمي {min,max}، ولكن لا يمكن أن يكون الحد الأدنى أو الحد الأقصى
تم تحليله كرقم صالح: إما أنه يحتوي على أصفار بادئة، أو أنه يمثل a كبيرًا جدًا
رقم للتعامل معه. يوضح <-- هنا مكان المشكلة في التعبير العادي
اكتشف. انظر بيرل.

· '%s' هو نوع مرتبط غير معروف في التعبير العادي

(F) لقد استخدمت "\b{...}" أو "\B{...}" و"..." غير معروفة لـ Perl. الحالي
يتم تقديم القيم الصالحة في "\b{}، \b، \B{}، \B" في الشرطة المائلة المائلة perlrebackslash.

· حجة مفقودة أو غير محددة تتطلب

(F) لقد حاولت الاتصال بـ "يتطلب" بدون وسيطة أو بقيمة غير محددة كـ
دعوى. "يتطلب" يتوقع إما اسم الحزمة أو مواصفات الملف كملف
دعوى. راجع "يتطلب" في perlfunc.

في السابق، كانت كلمة "require" بدون أي وسيطة أو تحذير "undef" بشأن اسم ملف فارغ.

جديد تحذيرات

· تم إهمال \C في التعبير العادي

(تم إهمال D) تم إهمال فئة الأحرف "/\C/" في الإصدار 5.20، وهي تُصدر الآن رمزًا
تحذير. ومن المفترض أن يصبح خطأ في الإصدار 5.24. هذه الفئة الشخصية
يطابق بايتًا واحدًا حتى لو ظهر ضمن حرف متعدد البايتات، فواصل
التغليف، ويمكن أن يفسد سلاسل UTF-8.

· تتم كتابة "%s" بشكل أكثر وضوحًا ببساطة كـ "%s" في التعبير العادي؛ تم وضع علامة <-- هنا في m/%s/

(W regexp) (فقط ضمن "استخدام re 'صارم'" أو ضمن "(؟[...])")

لقد حددت شخصية لها الطريقة الأكثر وضوحًا في كتابتها، وهي
يمكن حمله أيضًا على الأنظمة الأساسية التي تعمل بمجموعات أحرف مختلفة.

· تتم معاملة الوسيطة "%s" على أنها 0 بزيادة (++)

(رقم W) تم تغذية السلسلة المشار إليها كوسيطة لعامل التشغيل "++" الذي
تتوقع رقمًا أو سلسلة مطابقة "/^[a-zA-Z]*[0-9]*\z/". راجع "التلقائي-
الزيادة والتناقص التلقائي" في perlop للحصول على التفاصيل.

· يجب أن يكون كلا طرفي النطاق أو لا أحد منهما Unicode في التعبير العادي؛ تم وضع علامة <-- هنا في 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) أنت 1) تعمل ضمن ""استخدام اللغة""؛ 2) اللغة الحالية ليست أ
UTF-8 واحد؛ 3) لقد حاولت إجراء عملية تغيير الحالة المعينة على المحدد
حرف يونيكود؛ و4) نتيجة هذه العملية ستمزج بين Unicode والإعدادات المحلية
القواعد التي من المحتمل أن تتعارض.

فئة التحذيرات "اللغة" جديدة.

· :const تجريبي

(S التجريبية::const_attr) السمة "const" تجريبية. أذا أردت
استخدم الميزة، وقم بتعطيل التحذير الذي يحتوي على "لا توجد تحذيرات 'تجريبية::const_attr'"،
ولكن عليك أن تعلم أنه بقيامك بذلك فإنك تخاطر باحتمال كسر الكود الخاص بك في المستقبل
نسخة بيرل.

· فشل gmtime(%f).

(تجاوز W) لقد اتصلت بـ "gmtime" برقم لا يمكنه التعامل معه: كبير جدًا،
صغير جدًا، أو NaN. القيمة التي تم إرجاعها هي "undef".

· تعويم سداسي عشري: تجاوز الأس

(تجاوز W) النقطة العائمة السداسية العشرية لها أس أكبر من النقطة العائمة
تدعم النقطة.

· تعويم سداسي عشري: الأس التحتي

(تجاوز W) النقطة العائمة السداسية العشرية لها أس أصغر من النقطة العائمة
تدعم النقطة.

· تعويم سداسي عشري: تجاوز العشري

(تجاوز W) تحتوي النقطة العائمة الحرفية السداسية العشرية على عدد أكبر من البتات في الجزء العشري (
الجزء الموجود بين "0x" والأس، المعروف أيضًا باسم الكسر أو الدلالة)
مما تدعمه النقطة العائمة.

· التعويم السداسي العشري: فقدان الدقة

(تجاوز W) تحتوي النقطة العائمة السداسية العشرية على أرقام أكثر مما يمكن أن تكون داخليًا
انتاج. يمكن أن يكون سبب ذلك التنسيقات المزدوجة الطويلة غير المدعومة، أو الأعداد الصحيحة 64 بت
غير متاح (يلزم استرداد الأرقام ضمن بعض التكوينات).

· قد لا تعمل الإعدادات المحلية '%s' بشكل جيد.%s

(لغة ​​W) أنت تستخدم اللغة المحددة، وهي لغة غير UTF-8، والتي
حددت أنها غير متوافقة تمامًا مع ما يمكنها التعامل معه. الثاني %s يعطي أ
السبب.

فئة التحذيرات "اللغة" جديدة.

· فشل التوقيت المحلي (%f).

(تجاوز W) لقد اتصلت بـ "التوقيت المحلي" برقم لا يمكنه التعامل معه: كبير جدًا،
صغير جدًا، أو NaN. القيمة التي تم إرجاعها هي "undef".

· عدد التكرار السلبي لا يفعل شيئا

(رقم W) لقد حاولت تنفيذ عامل التكرار "x" أقل من 0 مرة، وهو ما
لا معنى له.

· تم إهمال عدم وجود مسافة فاصلة في تعريف الاسم المستعار للأسماء

(تم إهمال D) لقد قمت بتحديد اسم حرف يحتوي على مسافة غير فاصلة
شخصية. تغييره إلى مساحة عادية. عادة ما يتم تعريف هذه الأسماء في
": الاسم المستعار" استيراد وسيطة "لاستخدام أسماء الأحرف"، ولكن يمكن تعريفها بواسطة مترجم
مثبتة في $^H{charnames}. راجع "الأسماء المستعارة المخصصة" في الأسماء.

· تكرار العد غير المحدود لا يفعل شيئًا

(رقم W) لقد حاولت تنفيذ عامل التكرار "x" "Inf" (أو "-Inf") أو NaN
مرات، وهو ما لا معنى له.

· طبقة PerlIO ':win32' تجريبية

(S التجريبية::win32_perlio) طبقة PerlIO ":win32" تجريبية. إذا أردت
للمخاطرة باستخدام هذه الطبقة، ما عليك سوى تعطيل هذا التحذير:

لا توجد تحذيرات "تجريبية::win32_perlio"؛

· يجب أن تكون نطاقات مطبوعات ASCII عبارة عن مجموعة فرعية من "0-9" أو "AZ" أو "az" في التعبير العادي؛
تم وضع علامة <-- هنا في m/%s/

(W regexp) (فقط ضمن "استخدام re 'صارم'" أو ضمن "(؟[...])")

تساعد القواعد الأكثر صرامة في العثور على الأخطاء المطبعية والأخطاء الأخرى. ربما لم تكن تقصد حتى أ
النطاق هنا، إذا كان من المفترض أن يكون "-" حرفًا آخر، أو كان ينبغي أن يكون كذلك
هرب (مثل "\-"). إذا كنت تنوي نطاقًا، فإن النطاق الذي تم استخدامه ليس محمولاً
بين منصات ASCII وEBCDIC، وليس لها معنى واضح للعرضي
القارئ.

[3-7] # موافق؛ واضحة ومحمولة
[دغ] # موافق؛ واضحة ومحمولة
[AY] # حسنًا؛ واضحة ومحمولة
[من الألف إلى الياء] # خطأ؛ غير محمولة؛ ليس واضحا ما هو المقصود
[أز] # خطأ؛ غير محمولة؛ ليس واضحا ما هو المقصود
[٪-.] # خطأ؛ غير محمولة؛ ليس واضحا ما هو المقصود
[\x41-Z] # خطأ؛ غير محمولة؛ ليس واضحا لغير المهوس

(يمكنك فرض إمكانية النقل عن طريق تحديد نطاق Unicode، مما يعني أن
يتم تحديد نقاط النهاية بواسطة "\N{...}"، لكن المعنى قد لا يكون واضحًا.)
تتطلب القواعد الأكثر صرامة أن تبدأ النطاقات أو تتوقف بحرف ASCII
لا يوجد عنصر تحكم تكون جميع نقاط النهاية الخاصة به ذات طابع حرفي، وليس بعض الهروب
التسلسل (مثل "\x41")، ويجب أن تتكون النطاقات من أرقام أو أحرف كبيرة،
أو جميع الحروف الصغيرة.

· يجب أن تكون نطاقات الأرقام من نفس المجموعة في التعبير العادي؛ تم وضع علامة <-- هنا في m/%s/

(W regexp) (فقط ضمن "استخدام re 'صارم'" أو ضمن "(؟[...])")

تساعد القواعد الأكثر صرامة في العثور على الأخطاء المطبعية والأخطاء الأخرى. لقد قمت بتضمين نطاق، وفي
واحدة على الأقل من نقاط النهاية هي رقم عشري. بموجب القواعد الأكثر صرامة, عندما يكون هذا
في حالة حدوث ذلك، يجب أن تكون نقطتا النهاية عبارة عن أرقام في نفس المجموعة المكونة من 10 أرقام متتالية.

· وسيطة زائدة عن الحاجة في %s

(W زائدة عن الحاجة) لقد قمت باستدعاء دالة تحتوي على وسائط أكثر مما هو مطلوب، كما هو محدد
من خلال المعلومات ضمن الوسائط الأخرى التي قدمتها (على سبيل المثال. تنسيق printf). حالياً
ينبعث فقط عندما يتطلب تنسيق نوع printf وسائط أقل مما تم توفيره،
ولكن يمكن استخدامها في المستقبل ل على سبيل المثال "حزمة" في perlfunc.

فئة التحذيرات "زائدة عن الحاجة" جديدة. انظر أيضًا [بيرل #121025]
.

· قائمة الاستبدال أطول من قائمة البحث

هذا ليس تشخيصًا جديدًا، ولكن في الإصدارات السابقة لم يتم عرضه عن طريق الخطأ
إذا كانت الترجمة الصوتية تحتوي على أحرف واسعة. تم إصلاح هذا الآن، حتى تتمكن من ذلك
شاهد هذا التشخيص في الأماكن التي لم تشاهدها من قبل (ولكن يجب أن تشاهدها).

· استخدام \b{} للغة غير UTF-8 أمر خاطئ. بافتراض لغة UTF-8

(لغة ​​W) أنت تقوم بمطابقة تعبير عادي باستخدام قواعد اللغة وUnicode
تتم مطابقة الحدود، ولكن اللغة ليست Unicode. هذا لا يجعل
حاسة. ستستمر لغة Perl، بافتراض لغة Unicode (UTF-8)، لكن النتائج قد تكون كذلك
سيكون الأمر مخطئًا إلا إذا كانت اللغة هي ISO-8859-1 (Latin1) حيث يكون هذا
الرسالة زائفة ويمكن تجاهلها.

فئة التحذيرات "اللغة" جديدة.

· استخدام /u لـ '%s' بدلاً من /%s في التعبير العادي؛ تم وضع علامة <-- هنا في m/%s/

(W regexp) لقد استخدمت حد Unicode ("\b{...}" أو "\B{...}") في جزء من
تعبير عادي حيث تكون معدلات مجموعة الأحرف "/a" أو "/aa" سارية المفعول.
يشير هذان المعدلان إلى تفسير ASCII، وهذا لا معنى له
تعريف يونيكود. سيتم تجميع التعبير العادي الذي تم إنشاؤه بحيث
الحدود تستخدم كل Unicode. ولا يتأثر أي جزء آخر من التعبير العادي.

· ميزة bitwise تجريبية

(S تجريبي::bitwise) يتم إصدار هذا التحذير إذا كنت تستخدم عوامل تشغيل bitwise ("& | ^
~ &. |. ^. ~.") مع تمكين ميزة "bitwise". ما عليك سوى إلغاء التحذير if
تريد استخدام هذه الميزة، ولكنك تعلم أنك بذلك تخاطر
باستخدام ميزة تجريبية قد تتغير أو تتم إزالتها في إصدار Perl المستقبلي:

لا توجد تحذيرات "تجريبية::bitwise"؛
استخدام ميزة "bitwise"؛
$x |.= $y;

· تم إهمال الدعامة اليسرى التي لم يتم الهروب منها في التعبير العادي، وتم تمريرها في التعبير العادي؛ تم وضع علامة بـ <--
هنا في م/%s/

(تم إهمال D، regexp) لقد استخدمت الحرف "{" الحرفي في التعبير العادي
نمط. يجب عليك التغيير لاستخدام "\{" بدلاً من ذلك، لأن الإصدار المستقبلي من Perl
(مبدئيًا الإصدار 5.26) سيعتبر هذا خطأً في بناء الجملة. إذا كان النمط
المحددات هي أيضًا أقواس، وأي قوس أيمن مطابق ("}") يجب أيضًا الهروب إليه
تجنب إرباك المحلل اللغوي، على سبيل المثال،

ريال قطري {اي بي سي \ {ديف \}غي}

· تم إهمال استخدام الأحرف غير الرسومية في أسماء المتغيرات

(D مهمل) استخدام الأحرف غير الرسومية (بما في ذلك التحكم) في المصدر
للإشارة إلى ^ فو تم الآن إهمال المتغيرات، مثل $^X و"${^GLOBAL_PHASE}".

· الاستخدام غير المجدي للسمة "const"

(W Misc) ليس للسمة "const" أي تأثير إلا على نماذج الإغلاق المجهولة.
لقد قمت بتطبيقه على روتين فرعي عبر attributes.pm. هذا مفيد فقط داخل ملف
معالج السمات لروتين فرعي مجهول.

· الاستخدام غير المجدي لمعدل /d في مشغل الترجمة الصوتية

هذا ليس تشخيصًا جديدًا، ولكن في الإصدارات السابقة لم يتم عرضه عن طريق الخطأ
إذا كانت الترجمة الصوتية تحتوي على أحرف واسعة. تم إصلاح هذا الآن، حتى تتمكن من ذلك
شاهد هذا التشخيص في الأماكن التي لم تشاهدها من قبل (ولكن يجب أن تشاهدها).

· "استخدام إعادة 'صارم'" تجريبي

(S تجريبي::re_strict) الأشياء التي تختلف عند التعبير العادي
يتم تجميع النمط تحت عنوان "صارم" ويخضع للتغيير في إصدارات Perl المستقبلية في
طرق غير متوافقة هناك أيضًا مقترحات لتغيير كيفية تمكين الفحص الصارم
بدلاً من استخدام هذه pragma. وهذا يعني أن النمط الذي يجمع اليوم قد يكون
ليس في إصدار بيرل المستقبلي. وهذا التحذير هو لتنبيهك إلى هذا الخطر.

· تحذير: غير قادر على إغلاق مقبض الملف بشكل صحيح: %s

تحذير: غير قادر على إغلاق معالج الملف %s بشكل صحيح: %s

(S io) في السابق، كان Perl يتجاهل بصمت أي أخطاء عند إجراء إغلاق ضمني لـ a
مقبض ملف, أي حيث وصل العدد المرجعي لمقبض الملف إلى الصفر و
لم يكن رمز المستخدم يسمى "إغلاق ()" بالفعل؛ على سبيل المثال

{
افتح $fh, '>', $file أو مت "open: '$file': $!\n";
طباعة $fh أو $data أو الموت؛
} # إغلاق ضمني هنا

في حالة امتلاء القرص، بسبب التخزين المؤقت، قد يتم اكتشاف الخطأ فقط
أثناء الإغلاق النهائي، لذا فإن عدم التحقق من نتيجة الإغلاق أمر خطير.

لذا يحذر بيرل الآن في مثل هذه المواقف.

· حرف واسع (U+%X) في %s

(لغة ​​W) أثناء التواجد في لغة ذات بايت واحد (أي، غير UTF-8)، متعدد البايت
تمت مصادفة الشخصية. يعتبر Perl هذا الحرف هو Unicode المحدد
نقطة الكود. يعد الجمع بين اللغات غير UTF-8 وUnicode أمرًا خطيرًا. بكل تأكيد
سيكون لبعض الشخصيات تمثيلين مختلفين. على سبيل المثال، في ISO
8859-7 (اليونانية)، نقطة الرمز 0xC3 تمثل Capital Gamma. ولكن كذلك أيضاً
يفعل 0x393. سيؤدي هذا إلى جعل مقارنات السلسلة غير موثوقة.

من المحتمل أنك تحتاج إلى معرفة كيفية اختلاط هذه الشخصية متعددة البايت مع شخصيتك
لغة محلية أحادية البايت (أو ربما كنت تعتقد أن لديك لغة UTF-8، ولكن لغة Perl
لا يوافق).

فئة التحذيرات "اللغة" جديدة.

التغييرات إلى موجود التشخيص
· <> ينبغي أن تكون علامات الاقتباس

تم تغيير هذا التحذير إلى <> عند بيان الطلب يجب أن تكون علامات الاقتباس لإنشاء
قضية أكثر تحديدا.

· الوسيطة "%s" ليست%s رقمية

أضاف إدخال perldiag لهذا التحذير هذه الملاحظة التوضيحية:

لاحظ أنه بالنسبة إلى Inf وNaN (اللانهاية وليس الرقم) فإن
تعريف "الرقمي" غير عادي إلى حد ما: السلاسل نفسها
(مثل "Inf") تعتبر رقمية، وأي شيء يتبعها كذلك
تعتبر غير رقمية

· يتطلب الرمز العام "%s" اسم حزمة صريحًا

تم إلحاق هذه الرسالة بـ "(هل نسيت الإعلان عن "%s" الخاصة بي"؟)" لجعلها
أكثر فائدة لمبرمجي بيرل الجدد. [بيرل #121638]


· تمت إعادة صياغة المتغير &foo::bar "" الخاص بي" في حزمة" ليصبح "إجراء فرعي"
بدلاً من "المتغير".

· \N{} في فئة الأحرف يقتصر على حرف واحد في التعبير العادي؛ تم وضع علامة <-- هنا في
آنسة/

لقد كانت هذه الرسالة حرف فئة تغير إلى مقلوب حرف فئة or as a نطاق
نقطة النهاية is لتعكس التحسينات في "qr/[\N{تسلسل مسمى}]/" (انظر أدناه
"إصلاحات الأخطاء المحددة").

· الذعر: فريكس

تم إلحاق هذه الرسالة بـ ': %f' لإظهار النقطة العائمة المخالفة
العدد.

· ممكن الأولوية مشكلة on المختصة بالبت %c عامل تمت إعادة صياغته كأسبقية محتملة
مشكلة في عامل تشغيل %s.

· %s غير ناجح في اسم الملف الذي يحتوي على السطر الجديد

يتم الآن إنتاج هذا التحذير فقط عندما يكون السطر الجديد في نهاية اسم الملف.

· تم تغيير "لن يبقى المتغير %s مشتركًا" ليصبح "الروتين الفرعي" عندما يكون كذلك
في الواقع فرع معجمي لن يبقى مشتركًا.

· لم يتم تنفيذ المظهر الخلفي ذو الطول المتغير في التعبير العادي m/%s/

تمت إضافة معلومات حول سلوك Unicode لإدخال perldiag لهذا التحذير.

تشخيصي إزالة
· "تم حل الاستخدام الغامض لـ -foo كـ -&فو ()"

في الواقع ليس هناك أي غموض هنا، وهذا يعيق استخدام الثوابت المنفية؛
على سبيل المثال"-Inf".

· "الثابت ليس مرجع FOO"

التحقق من وقت الترجمة لإلغاء الإسناد المستمر (على سبيل المثال، "my_constant->()") كان
تمت إزالته، لأنه لم يأخذ في الاعتبار الحمولة الزائدة. [بيرل #69456]
[بيرل #69456]


مرافق التغييرات


find2perl, s2p و a2 ص إزالة
· ال x2p/ تمت إزالة الدليل من قلب Perl.

يؤدي هذا إلى إزالة find2perl وs2p وa2p. لقد تم إطلاق سراحهم جميعًا إلى CPAN بشكل منفصل
التوزيعات ("App::find2perl"، "App::s2p"، "App::a2p").

h2ph
· h2ph يعالج الآن الثوابت السداسية العشرية في تعريفات الماكرو المحددة مسبقًا للمترجم،
كما هو مرئي في $Config{cppsymbols}. [بيرل #123784]
.

تغليف
· لم يعد يعتمد على الوحدات غير الأساسية.

الاعداد و مجموعة


· ضبط يتحقق الآن من "lrintl()" و"lroundl()" و"llrintl()" و"llroundl()".

· ضبط مع "-Dmksymlinks" يجب أن يكون الآن أسرع. [بيرل #122002]
.

· سيتم ربط مكتبات "pthreads" و"cl" افتراضيًا في حالة وجودها. هذا يسمح
وحدات XS التي تتطلب الترابط للعمل على بيرل غير مترابطة. لاحظ أنه يجب عليك
لا تزال تمرر "-Dusethreads" إذا كنت تريد بيرل مترابطة.

· للحصول على مزيد من الدقة والنطاق لأرقام الفاصلة العائمة، يمكن للمرء الآن استخدام دول مجلس التعاون الخليجي
مكتبة Quadmath التي تنفذ أرقام الفاصلة العائمة ذات الدقة الرباعية
منصات x86 و IA-64. يرى تثبيت للتفاصيل.

· يمكن الآن تكوين MurmurHash64A وMurmurHash64B كوظيفة تجزئة داخلية.

· "جعل test.valgrind" يدعم الآن الاختبار الموازي.

فمثلا:

TEST_JOBS = 9 إجراء اختبار

راجع "valgrind" في perlhacktips لمزيد من المعلومات.

[بيرل #121431]

· تمت إزالة خيار البناء MAD (Misc Attribute Decorating).

لقد كانت هذه محاولة فاشلة للحفاظ على شجرة تحليل بيرل بشكل أكثر دقة
كان من الممكن أن يكون التحويل التلقائي من Perl 5 إلى Perl 6 أسهل.

لم يتم الحفاظ على خيار تكوين وقت البناء هذا لسنوات، وربما كان كذلك
تباعدت بشكل خطير على جانبي Perl 5 وPerl 6.

· علامة التجميع الجديدة، "-DPERL_OP_PARENT" متاحة. للحصول على التفاصيل، راجع
المناقشة أدناه في "التغييرات الداخلية".

· لم تعد Pathtools تحاول تحميل XS على miniperl. يؤدي هذا إلى تسريع بناء بيرل
بعض الشيء.

الاختبار


· t/porting/re_context.t تمت إضافته لاختبار استخدام utf8 وتبعياته فقط
المجموعة الفرعية من متغيرات الالتقاط "$1..$n" التي تم ترميز "Perl_save_re_context()" عليها
localize، لأن هذه الوظيفة ليس لديها طريقة فعالة لتحديد ما هي في وقت التشغيل
vars للترجمة.

· تمت إضافة اختبارات مشكلات الأداء إلى الملف t/perf/taint.t.

· تتم كتابة بعض اختبارات التعبير العادي بطريقة تجعلها تعمل ببطء شديد
في حالة كسر بعض التحسينات. تم نقل هذه الاختبارات إلى ملفات جديدة،
ر/إعادة/سرعة.t و t/re/speed_thr.t، ويتم تشغيلها باستخدام "watchdog()".

· "test.pl" يسمح الآن بـ "planskip_all => $reason" لجعله أكثر توافقا مع
"اختبار::المزيد".

· نص اختبار جديد، مرجع سابق/infnan.t، تمت إضافته لاختبار ما إذا كان اللانهاية وNaN يعملان
بشكل صحيح. راجع "تحسين التعامل مع Infinity وNaN (ليس رقمًا)".

المنظومة الدعم


استعاد بلاتفورم
منصات IRIX وTru64 تعمل مرة أخرى.
تبقى بعض حالات فشل "إجراء الاختبار": [Perl #123977]
و [بيرل #123977]
ل إيريكس. [بيرل #125298]
، [cpan #124212]
و [cpan #99605]
لTru104836.

z/OS يقوم بتشغيل EBCDIC Code Page 1047
يعمل Core Perl الآن على منصة EBCDIC هذه. عملت Perls السابقة أيضًا، ولكن حتى
على الرغم من أن الدعم لم يتم سحبه رسميًا، إلا أن Perls الأخيرة لن يتم تجميعها وتشغيلها
حسنًا. قد يعمل Perl 5.20، ولكن به العديد من الأخطاء التي تم إصلاحها الآن. العديد من CPAN
الوحدات التي تأتي مع لغة Perl لا تزال تفشل في الاختبارات، بما في ذلك "Pod::Simple". ومع ذلك
يجب أن يعمل إصدار "Pod::Simple" الموجود حاليًا على CPAN؛ تم إصلاحه بعد فوات الأوان
تضمين في بيرل 5.22. يجري العمل حاليًا على إصلاح العديد من وحدات CPAN التي لا تزال معطلة،
والتي من المحتمل أن يتم تثبيتها على CPAN عند اكتمالها، حتى لا تضطر إلى القيام بذلك
انتظر حتى إصدار Perl 5.24 للحصول على نسخة صالحة للعمل.

توقف بلاتفورم
الخطوة التالية/الخطوة المفتوحة
كان NeXTSTEP نظام تشغيل خاصًا تم تضمينه مع محطات عمل NeXT في
في وقت مبكر إلى منتصف التسعينيات. كانت OPENSTEP إحدى مواصفات واجهة برمجة التطبيقات (API) التي توفر ما يشبه NeXTSTEP
البيئة على نظام غير NeXTSTEP. كلاهما مات الآن منذ فترة طويلة، لذا دعم البناء
تمت إزالة بيرل عليها.

منصة خاصة ملاحظة
EBCDIC
مطلوب معالجة خاصة لمترجم Perl على منصات EBCDIC للحصول عليه
"qr/[ij]/" لمطابقة "i" و"j" فقط، نظرًا لوجود 7 أحرف بين الكود
نقاط لـ "i" و"j". لم يتم التذرع بهذه المعالجة الخاصة إلا عندما يكون كلا الطرفين
النطاق حرفي. الآن يتم استدعاؤه أيضًا في حالة وجود أي من نماذج "\N{...}" لـ
يتم استخدام تحديد حرف بالاسم أو نقطة رمز Unicode بدلاً من الحرفي.
راجع "نطاقات الأحرف" في perlrecharclass.

HP-UX
يميز الاسم الرئيسي الآن use64bitint عن use64bitall.

أندرويد
تم تحسين دعم البناء للتجميع المتبادل بشكل عام ولنظام Android في
معين.

VMS
· عند إنتاج عملية فرعية دون انتظار، تصبح قيمة الإرجاع هي الصحيحة الآن
PID

· إصلاح النموذج الأولي حتى لا يفشل الارتباط تحت مترجم VMS C++.

· تمت إضافة الكشف عن "المحدود" و"المحدود" و"غير المحدود" إلى "configure.com".
شهدت معالجة البيئة بعض التغييرات الطفيفة وإصلاحًا للميزة القديمة
حالة التحقق.

Win32
· miniperl.exe تم إنشاؤه الآن باستخدام "-fno-strict-aliasing"، مما يسمح بإنشاء 64 بت
كامل على دول مجلس التعاون الخليجي 4.8. [بيرل #123976]


· "nmake minitest" يعمل الآن على Win32. بسبب مشاكل التبعية تحتاج إلى البناء
"nmake test-prep" أولاً، ويفشل عدد صغير من الاختبارات. [بيرل #123394]


· يمكن الآن بناء لغة Perl في وضع C++ على نظام Windows عن طريق إعداد ماكرو makefile
"USE_CPLUSPLUS" إلى القيمة "تعريف".

· تم تنفيذ نموذج القائمة المفتوحة لـ Win32. ملحوظة: على عكس "system
LIST" هذا لا يعود إلى الصدفة. [Perl #121159]


· تمت إضافة خيارات التكوين "DebugSymbols" و"DebugFull" الجديدة إلى نظام التشغيل Windows
com.makefiles.

· في السابق، تم تجميع وحدات XS (بما في ذلك وحدات CPAN) باستخدام Visual C++ لـ Win64
أدى إلى حوالي عشرة تحذيرات لكل ملف من hv_func.h. هذه التحذيرات لديها
تم إسكاته.

· تمت إزالة دعم البناء بدون PerlIO من ملفات تعريف Windows.
تم إهمال جميع الإصدارات التي لا تعتمد على PerlIO في Perl 5.18.0 ولم تعد موجودة بالفعل
مدعوم من ضبط على أنظمة POSIX.

· تم حفظ ما بين 2 و6 ميلي ثانية وسبعة مكالمات إدخال/إخراج لكل محاولة
افتح وحدة Perl لكل مسار فيINC.

· يتم الآن تصميم إصدارات Intel C دائمًا مع تشغيل وضع C99.

· يتم الآن استخدام %I64d بدلاً من %lld لـ MinGW.

· في الطبقة التجريبية ":win32"، تم إصلاح العطل في "الفتح". افتتاح أيضا
/ ديف / لاغية (الذي يعمل ضمن طبقة Win32 Perl الافتراضية ":unix") تم تنفيذه
لـ ":win32". [بيرل #122224]

· تم إضافة خيار makefile جديد، "USE_LONG_DOUBLE"، إلى Windows dmake
Makefile لبنيات دول مجلس التعاون الخليجي فقط. اضبط هذا على "تحديد" إذا كنت تريد استخدام Perl لفترة طويلة
يتضاعف لإعطاء مزيد من الدقة والنطاق لأرقام الفاصلة العائمة.

اكبر برهان
في OpenBSD، سيستخدم Perl الآن نظام "malloc" افتراضيًا نظرًا للأمان
الميزات التي يوفرها. تم استخدام غلاف malloc الخاص بـ Perl منذ الإصدار 5.14 بسبب
لأسباب تتعلق بالأداء، لكن مشروع OpenBSD يعتقد أن المقايضة تستحق العناء
يفضل أن يطلبها المستخدمون الذين يحتاجون إلى السرعة على وجه التحديد.

[بيرل #122000] .

سولاريس
· نبحث الآن عن مترجم Sun Studio في كليهما /الاختيار/solstudio* و
/الاختيار/solarisstudio*.

· البناء على Solaris 10 مع "-Dusedtrace" قد يفشل مبكرًا نظرًا لعدم اتباع الإجراء
التبعيات الضمنية لإنشاء "perldtrace.h". تمت إضافة تبعية صريحة إلى
"تعتمد". [بيرل #120120]

· تم تنظيف خيارات C99. تلميحات ابحث عن "solstudio" أيضًا
"SUNWspro"; وتمت إضافة دعم لـ "setenv" الأصلي.

داخلي التغييرات


· تمت إضافة الدعم التجريبي للسماح للعمليات في optree بتحديد موقع الوالدين،
لو اي. يتم تمكين هذا من خلال خيار البناء غير الافتراضي "-DPERL_OP_PARENT". إنها
من المتصور أن هذا سيصبح ممكنًا في النهاية افتراضيًا، لذلك رمز XS الذي
يصل مباشرة إلى حقل العمليات "op_sibling" ويجب تحديثه ليصبح مستقبليًا-
مثبت.

في إصدارات "PERL_OP_PARENT"، تمت إعادة تسمية الحقل "op_sibling" إلى "op_sibparent" و
تمت إضافة علم جديد "op_moresib". في العملية الأخيرة في سلسلة الأخوة، يكون "op_moresib".
false ويشير "op_sibparent" إلى الأصل (إن وجد) بدلاً من أن يكون "NULL".

لجعل التعليمات البرمجية الموجودة تعمل بشفافية سواء باستخدام "PERL_OP_PARENT" أم لا، أ
تمت إضافة عدد من وحدات الماكرو والوظائف الجديدة التي يجب استخدامها، بدلاً من
التلاعب مباشرة بـ "op_sibling".

بالنسبة لحالة مجرد قراءة "op_sibling" لتحديد الأخ التالي، اثنان جديدان
تمت إضافة وحدات الماكرو. مسح بسيط من خلال سلسلة الأخوة مثل هذا:

for (; kid->op_sibling; kid = kid->op_sibling) { ... }

يجب الآن أن تكون مكتوبة على النحو التالي:

for (; OpHAS_SIBLING(kid); kid = OpSIBLING(kid)) { ... }

لتغيير أشجار البصريات، تمت إضافة وظيفة للأغراض العامة "op_sibling_splice()"،
مما يسمح بالتلاعب بسلسلة من عمليات الأخوة. قياسا على بيرل
وظيفة "splice ()" ، فهي تسمح لك بقطع صفر أو أكثر من العمليات من سلسلة الأخوة
واستبدلها بصفر أو أكثر من العمليات الجديدة. يتعامل بشفافية مع كافة التحديثات
من الأخوة والوالدين ومؤشرات op_last وما إلى ذلك.

إذا كنت بحاجة إلى التعامل مع العمليات على مستوى أدنى، فعندئذٍ ثلاثة وحدات ماكرو جديدة،
تم تصميم "OpMORESIB_set" و"OpLASTSIB_set" و"OpMAYBESIB_set" لتكون ذات مستوى منخفض.
طريقة محمولة لتعيين "op_sibling" / "op_sibparent" أثناء تحديث "op_moresib" أيضًا.
الأول يعين مؤشر الأخ إلى شقيق جديد، والثاني يجعل العملية الأخيرة
الأخ، والثالث يقوم بالإجراء الأول أو الثاني بشكل مشروط. لاحظ أن
على عكس "op_sibling_splice()" لن تحافظ وحدات الماكرو هذه على الاتساق في الأصل عند
نفس الوقت (على سبيل المثال عن طريق تحديث "op_first" و"op_last" حيثما كان ذلك مناسبًا).

تحتوي وظيفة "Perl_op_parent()" على المستوى C وأسلوب Perl "B::OP::parent()" على مستوى Perl
تمت إضافتها. وظيفة C موجودة فقط ضمن بنيات "PERL_OP_PARENT" (استخدامها هو
خطأ في وقت البناء على الفانيليا بيرلز). "B::OP::parent()" موجود دائمًا، ولكن على شكل فانيليا
إن بنائه يُرجع دائمًا "NULL". ضمن "PERL_OP_PARENT"، يقومون بإرجاع الأصل لـ
المرجع الحالي، إن وجد. المتغير $B::OP::does_parent يسمح لك بتحديد ما إذا كان
يدعم "B" استرداد أصل العملية.

تم تقديم "PERL_OP_PARENT" في الإصدار 5.21.2، ولكن تم تغيير الواجهة بشكل كبير
في 5.21.11. إذا قمت بتحديث الكود الخاص بك قبل تغييرات 5.21.11، فقد يتطلب ذلك
مزيد من المراجعة. التغييرات الرئيسية بعد 5.21.2 كانت:

· تمت إعادة تسمية وحدات الماكرو "OP_SIBLING" و"OP_HAS_SIBLING" إلى "OpSIBLING" و
"OpHAS_SIBLING" للتوافق مع وحدات الماكرو الأخرى التي يتم التحكم فيها.

· تمت إعادة تسمية الحقل "op_lastsib" إلى "op_moresib"، وتم عكس معناه.

· تمت إزالة الماكرو "OpSIBLING_set" وتم استبداله
"أوبمورسيب_سيت" et al.

· تقبل الدالة "op_sibling_splice()" الآن الوسيطة "الأصل" الخالية حيث يكون
لا يؤثر الربط على العملية الأولى أو الأخيرة في سلسلة الأخوة

· تم إنشاء وحدات الماكرو للسماح لرمز XS بمعالجة لغة POSIX بشكل أفضل
الفئة "LC_NUMERIC". راجع "الوظائف ووحدات الماكرو المتعلقة بالإعدادات المحلية" في perlapi.

· "اتوي" السابقة et al تم الآن استبدال وظيفة الاستبدال، "grok_atou".
بواسطة "grok_atoUV". راجع بيرلكليب للحصول على التفاصيل.

· تمت إضافة وظيفة جديدة، "Perl_sv_get_backrefs()"، والتي تتيح لك استرداد
المراجع الضعيفة، إن وجدت، والتي تشير إلى SV.

· تمت إزالة وظيفة "screaminstr()". على الرغم من أنه تم وضع علامة API العامة عليه، إلا أنه كان كذلك
غير موثقة وليس لها أي استخدام في وحدات CPAN. لقد كان الاتصال به قاتلاً منذ 5.17.0.

· تحتوي الوظائف "newDEFSVOP()" و"block_start()" و"block_end()" و"intro_my()" على
تمت إضافتها إلى API.

· وظيفة "التحويل" الداخلية مرجع سابق تمت إعادة تسمية "op_convert_list" وإضافتها
إلى واجهة برمجة التطبيقات.

· لم تعد وظيفة "sv_magic()" تمنع استخدام السحر "ext" في قيم القراءة فقط. بعد
الكل، لا يستطيع بيرل معرفة ما إذا كان السحر المخصص سيعدل ملف SV أم لا. [بيرل
#123103] .

· الوصول إلى "CvPADLIST" في perlapi على XSUB محظور الآن.

تمت إعادة استخدام الحقل "CvPADLIST" لغرض داخلي مختلف لـ XSUBs. لذا
على وجه الخصوص، لم يعد بإمكانك الاعتماد على كونها فارغة كاختبار لمعرفة ما إذا كانت السيرة الذاتية أم لا
XSUB. استخدم "CvISXSUB()" بدلاً من ذلك.

· أصبحت SVs من النوع "SVt_NV" الآن بلا جسد في بعض الأحيان عند تكوين التكوين و
النظام الأساسي يسمح بذلك: على وجه التحديد، عندما يكون "sizeof(NV) <= sizeof(IV)". يعني "بلا جسد".
أن قيمة NV يتم تخزينها مباشرة في رأس SV، دون الحاجة إلى
سيتم تخصيص هيئة منفصلة. لقد تم بالفعل استخدام هذه الخدعة للـ IVs منذ 5.9.2
(على الرغم من أنه في حالة IVs، يتم استخدامه دائمًا، بغض النظر عن النظام الأساسي والبنية
إعدادات).

· أصبحت متغيرات $DB::single و$DB::signal و$DB::trace تحتوي الآن على مجموعة سحرية وget-magic
يخزن قيمها كـ IVs، ويتم استخدام تلك IVs عند اختبار قيمها
"pp_dbstate()". هذا يمنع Perl من التكرار بشكل لا نهائي في حالة تحميل كائن بشكل زائد
يتم تعيينه لأي من تلك المتغيرات. [بيرل #122445]
.

· "Perl_tmps_grow()"، والتي تم وضع علامة عليها كواجهة برمجة تطبيقات عامة ولكنها غير موثقة،
تمت إزالته من واجهة برمجة التطبيقات العامة. لا يؤثر هذا التغيير على رمز XS الذي يستخدم
ماكرو "EXTEND_MORTAL" لتمديد المكدس البشري مسبقًا.

· لم تعد الأجزاء الداخلية لـ Perl تقوم بتعيين أو استخدام علامة "SVs_PADMY". يعود الآن "SvPADMY()".
القيمة الحقيقية لأي شيء لم يتم وضع علامة عليه "PADTMP" و"SVs_PADMY" تم تعريفها الآن على أنها 0.

· تمت إزالة وحدات الماكرو "SETsv" و"SETsvUN". ولم تعد تستخدم في
الأساسية منذ الالتزام 6f1401dc2a قبل خمس سنوات، ولم يتم العثور عليها موجودة في CPAN.

· تم حجز الجزء "SvFAKE" (غير المستخدم في المركبات عالية الجهد) بشكل غير رسمي بواسطة David Mitchell للمستقبل
العمل على جداول vtables.

· تقبل الدالة "sv_catpvn_flags()" علامتي "SV_CATBYTES" و"SV_CATUTF8"، والتي
تحديد ما إذا كانت السلسلة الملحقة هي بايت أو UTF-8، على التوالي. (هذه الأعلام لديها
في الواقع كانت موجودة منذ 5.16.0، ولكن لم تكن تعتبر في السابق جزءًا من واجهة برمجة التطبيقات.)

· تم تقديم فئة كود التشغيل الجديدة "METHOP". أنه يحمل المعلومات المستخدمة في
وقت التشغيل لتحسين أداء استدعاءات أسلوب الفئة/الكائن.

تم تغيير "OP_METHOD" و"OP_METHOD_NAMED" من "UNOP/SVOP" إلى "UNOP/SVOP"
"ميثوب".

· "cv_name()" هي وظيفة API جديدة يمكن تمريرها إلى السيرة الذاتية أو GV. تقوم بإرجاع SV
يحتوي على اسم الروتين الفرعي لاستخدامه في التشخيص.

[بيرل #116735] [بيرل #116735]


· "cv_set_call_checker_flags()" هي وظيفة API جديدة تعمل بنفس الطريقة
"cv_set_call_checker()"، إلا أنه يسمح للمتصل بتحديد ما إذا كانت المكالمة أم لا
يتطلب المدقق صورة عامة كاملة للإبلاغ عن اسم الروتين الفرعي، أو ما إذا كان يمكن أن يكون كذلك
مرت السيرة الذاتية بدلا من ذلك. مهما كانت القيمة التي تم تمريرها ستكون مقبولة لدى "cv_name()".
يضمن "cv_set_call_checker()" وجود GV، ولكن قد يتعين عليه إنشاء واحد
على الطاير، وهو أمر غير فعال. [بيرل #116735]


· "CvGV" (الذي ليس جزءًا من API) أصبح الآن ماكرو أكثر تعقيدًا، والذي قد يستدعي a
وظيفة وreify GV. بالنسبة لتلك الحالات التي تم استخدامها كقيمة منطقية،
تمت إضافة "CvHASGV"، والذي سيعود صحيحًا بالنسبة للسير الذاتية التي تحتوي افتراضيًا على صور عامة، ولكن
دون إعادة صياغة الأصوات العالمية. تقوم "CvGV" أيضًا بإرجاع GV الآن للغواصات المعجمية. [بيرل
#120441]

· تمت إضافة "sync_locale" في وظيفة perlapi إلى واجهة برمجة التطبيقات العامة. تغيير
يجب تجنب لغة البرنامج بواسطة رمز XS. ومع ذلك، بعض غير بيرل
تحتاج المكتبات التي يتم استدعاؤها من XS إلى القيام بذلك، مثل "Gtk". عندما يحدث هذا، يحتاج بيرل
أن يقال أن اللغة قد تغيرت. استخدم هذه الوظيفة للقيام بذلك قبل العودة
إلى بيرل.

· أصبحت الآن تعريفات وتسميات العلامات الموجودة في الحقل "op_private" الخاص بـ OPs تلقائية
تم إنشاؤها من البيانات في regen/op_private. التأثير الملحوظ لهذا هو أن البعض
قد يختلف إخراج العلم لـ "موجز" قليلاً، وقد يختلف إخراج العلم لـ
قد يختلف "Perl -Dx" بشكل كبير (كلاهما يستخدم نفس مجموعة التسميات الآن). أيضًا،
تحتوي تصميمات تصحيح الأخطاء الآن على تأكيد جديد في "op_free()" لضمان عدم حدوث ذلك
لديك أي علامات غير معروفة تم تعيينها في "op_private".

· تمت إزالة المتغير المهمل "PL_sv_objcount".

· يحاول Perl الآن الاحتفاظ بالفئة المحلية "LC_NUMERIC" مضبوطة على "C" فيما عدا ما حولها
العمليات التي تحتاج إلى تعيينها على اللغة الأساسية للبرنامج. هذا يحمي
العديد من وحدات XS التي لا يمكنها التعامل مع حرف الجذر العشري الذي لا يكون نقطة.
قبل هذا الإصدار، قام Perl بتهيئة هذه الفئة إلى "C"، ولكنها كانت بمثابة استدعاء لـ
"POSIX :: setlocale ()" من شأنه أن يغيره. الآن ستغير هذه المكالمة الأساس
لغة فئة "LC_NUMERIC" للبرنامج، ولكن اللغة معرضة لرمز XS
سيبقى "ج". هناك وحدات ماكرو جديدة لمعالجة لغة LC_NUMERIC، بما في ذلك
"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".

لاحظ أن الإصدارات الخالية من البادئات لتلك الوظائف التي تشكل جزءًا من واجهة برمجة التطبيقات العامة،
مثل "cast_i32()"، تظل غير متأثرة.

· أصبح النوعان "PADNAME" و"PADNAMELIST" الآن منفصلين، ولم يعدا مجرد نوعين
الأسماء المستعارة لـ SV وAV. [بيرل #123223]
.

· أصبحت أسماء اللوحات الآن دائمًا UTF-8. يُرجع الماكرو "PadnameUTF8" دائمًا القيمة true.
في السابق، كان هذا هو الحال بالفعل، ولكن أي دعم لاثنين مختلفان
تمت الآن إزالة التمثيلات الداخلية لأسماء اللوحات.

· تمت إضافة فئة تشغيلية جديدة "UNOP_AUX". هذه فئة فرعية من "UNOP" ذات
تمت إضافة حقل "op_aux"، والذي يشير إلى مجموعة من اتحادات الأشعة فوق البنفسجية وSV* وما إلى ذلك
مخصص للمكان الذي تحتاج فيه العملية إلى تخزين بيانات أكثر من "op_sv" البسيط أو أي شيء آخر.
العملية الوحيدة من هذا النوع حاليًا هي "OP_MULTIDEREF" (انظر العنصر التالي).

· تمت إضافة عملية جديدة، "OP_MULTIDEREF"، والتي تنفذ واحدة أو أكثر من المصفوفات المتداخلة
عمليات البحث عن التجزئة حيث يكون المفتاح متغيرًا ثابتًا أو بسيطًا. على سبيل المثال
التعبير $a[0]{$k}[$i]، والذي كان يتضمن في السابق عشرة "rv2Xv" و"Xelem" و"gvsv" و
يتم الآن تنفيذ العمليات "const" بواسطة عملية "multideref" واحدة. يمكنه أيضًا التعامل مع "المحلي"
"موجود" و"حذف". لا يزال يتم تنفيذ تعبير فهرس غير بسيط، مثل "[$i+1]".
باستخدام "aelem"/"helem"، والبحث عن مصفوفة أحادية المستوى بمؤشر ثابت صغير
لا يزال يتم ذلك باستخدام "aelemfast".

مختار علة إصلاحات


· "إغلاق" يحدد الآن $!

عند حدوث خطأ في الإدخال/الإخراج، يتم تسجيل حقيقة حدوث خطأ في الملف
مقبض. "إغلاق" يُرجع خطأ لمثل هذا المقبض. سابقا، كانت قيمة $! كان
لا تتأثر بكلمة "إغلاق"، وبالتالي فإن التقليد الشائع لكتابة "إغلاق $fh أو die $!" فعل
لا تعمل بشكل موثوق. الآن يسجل المقبض قيمة $! أيضًا، ويتم استعادة "الإغلاق".
هنا.

· يمكن لـ "no re" الآن إيقاف كل ما يتيحه "use re".

في السابق، كان تشغيل "no re" يؤدي إلى إيقاف تشغيل بعض الأشياء فقط. الآن يمكنه إيقاف الكل
الأشياء الممكنة. على سبيل المثال، كانت الطريقة الوحيدة لإيقاف تصحيح الأخطاء، بمجرد تمكينها، هي القيام بذلك
الخروج من الكتلة المرفقة؛ تم إصلاح ذلك الآن.

· "pack("D", $x)" و"pack("F, $x)" الآن صفر المساحة المتروكة على الإصدارات المزدوجة الطويلة x86.
في ظل بعض خيارات البناء على الإصدار 4.8 من مجلس التعاون الخليجي والإصدارات الأحدث، اعتادوا إما الكتابة فوق الصفر
الحشو الذي تمت تهيئته، أو تجاوز المخزن المؤقت الذي تمت تهيئته بالكامل. هذا سبب المرجع/pack.t
للفشل. [بيرل #123971]

· قد يؤدي توسيع مصفوفة مستنسخة من الخيط الأصلي إلى "تعديل ملف
"محاولة القيمة للقراءة فقط" أخطاء عند محاولة تعديل العناصر الجديدة. [Perl
#124127]

· فشل التأكيد والتعطل اللاحق مع "*x= "تم إصلاحه. [بيرل
#123790]

· تم إصلاح خطأ التعطل/التكرار المحتمل المتعلق بتجميع الغواصات المعجمية.
[بيرل #124099]

· يعمل UTF-8 الآن بشكل صحيح في أسماء الوظائف، وفي علامات إنهاء المستند غير المقتبسة،
وفي أسماء المتغيرات المستخدمة كفهارس المصفوفة. [بيرل #124113]


· النمط العالمي المتكرر يتطابق في سياق العددي على سلاسل كبيرة ملوثة
بطيء بشكل كبير اعتمادًا على موضع المطابقة الحالي في السلسلة. [بيرل
#123202]

· تم إصلاح العديد من الأعطال بسبب الخلط بين المحلل اللغوي والأخطاء النحوية.
[بيرل #123801] [بيرل #123801]
[بيرل #123802]
[بيرل #123955]


· "الانقسام" في نطاق $_ المعجمي تم إصلاحه بحيث لا تفشل التأكيدات. [بيرل
#123763]

· لم يعد بناء جملة "my $x : attr" داخل القائمة المختلفة يفشل في التأكيدات. [بيرل
#123817]

· علامات الاقتباس "@" متبوعة برقم غير ASCII (وهو ليس معرفًا صالحًا)
من شأنه أن يتسبب في تعطل المحلل اللغوي، بدلاً من مجرد تجربة "@" بشكل حرفي. هذا
تم إصلاح. [بيرل #123963]

· لقد تعطل "*bar::=*foo::=*glob_with_hash" منذ إصدار Perl 5.14، ولكنه توقف عن ذلك.
[بيرل #123847]

· "foreach" في السياق العددي لم يكن يدفع العنصر إلى المكدس، مما أدى إلى
البق. ("طباعة 4، العددية do { foreach(@x){} } + 1" ستطبع 5.) لقد تم إصلاحه
للعودة "undef". [بيرل #124004]

· العديد من حالات البيانات المستخدمة لتخزين محتويات البيئة المتغيرة في كود C الأساسي
تم إصلاح احتمال الكتابة فوقها قبل استخدامها. [بيرل #123748]


· بعض الأنماط التي تبدأ بـ "/.*..../" كانت المطابقة مع السلاسل الطويلة بطيئة
منذ الإصدار 5.8، وبعض الأشكال "/.*..../i" كانت بطيئة منذ الإصدار 5.18. وهي الآن كذلك
كل شيء بسرعة مرة أخرى. [بيرل #123743] .

· يتم الآن الاحتفاظ بالقيمة المرئية الأصلية $/ عند ضبطها على قيمة غير صالحة.
في السابق، إذا قمت بتعيين $/ إلى مرجع لمصفوفة، على سبيل المثال، فإن Perl سينتج ملفًا
خطأ في وقت التشغيل ولم يتم تعيين "PL_rs"، لكن كود Perl الذي حدد $/ سيرى المصفوفة
مرجع. [بيرل #123218] .

· في نمط التعبير العادي، يجب أن تكون فئة POSIX، مثل "[:ascii:]"، داخل ملف
فئة الأحرف بين قوسين، مثل "qr/[[:ascii:]]/". يتم إصدار تحذير عندما يكون هناك شيء ما
يبدو أن فئة POSIX ليست داخل فئة بين قوسين. هذا التحذير لم يكن كذلك
يتم إنشاؤه عند إلغاء فئة POSIX: "[:^ascii:]". تم إصلاح هذا الآن.

· قدم Perl 5.14.0 خطأً يؤدي إلى تعطل "eval { LABEL: }". لقد كان هذا
مُثَبَّت. [بيرل #123652] .

· تم إصلاح العديد من الأعطال بسبب الخلط بين المحلل اللغوي والأخطاء النحوية.
[بيرل #123617] . [بيرل #123617]
. [بيرل #123737]
. [بيرل #123753]
.

· يستخدم رمز مثل "/$a[/" لقراءة السطر التالي من الإدخال والتعامل معه كما لو أنه جاء
مباشرة بعد قوس الافتتاح. وبالتالي سيتم تحليل بعض التعليمات البرمجية غير الصالحة و
run، لكن بعض التعليمات البرمجية تسببت في حدوث أعطال، لذا فإن هذا غير مسموح به الآن. [بيرل #123712]
.

· إصلاح الوسيطة التحوطية ل"حزمة". [بيرل #123874]
.

· إصلاح التعامل مع "\x{}" غير الصارمة. الآن "\x{}" يعادل "\x{0}" بدلاً من
معيب.

· لم يعد "stat -t" يُعامل على أنه قابل للتكديس، تمامًا مثل "-t stat". [بيرل #123816]
.

· لم يعد ما يلي يسبب SEGV: "qr{x+(y(?0))*}".

· حلقة لا نهائية ثابتة في تحليل المراجع الخلفية في أنماط التعبير المنطقي.

· عدة إصلاحات طفيفة في سلوك Infinity وNaN، بما في ذلك التحذيرات عندما
ربط سلاسل تشبه Infinity أو NaN. على سبيل المثال، "NaNcy" لا يُرقم إلى
نان بعد الآن.

· خطأ في أنماط التعبير العادي يمكن أن يؤدي إلى أخطاء segfaults وتعطلات أخرى
تم إصلاح. حدث هذا فقط في الأنماط التي تم تجميعها باستخدام "/i" أثناء الأخذ في الاعتبار
حساب لغة POSIX الحالية (مما يعني عادةً أنه يجب تجميعها داخل
نطاق "استخدام اللغة")، ويجب أن تكون هناك سلسلة مكونة من 128 سلسلة متتالية على الأقل
بايت للمطابقة. [بيرل #123539] .

· يعمل "s///g" الآن على سلاسل طويلة جدًا (حيث يوجد أكثر من 2 مليار
التكرارات) بدلاً من الموت باستخدام "حلقة الاستبدال". [بيرل #103260]
. [بيرل #103260]
.

· "gmtime" لم يعد يتعطل بقيم غير رقم. [بيرل #123495]
.

· "\()" (إشارة إلى قائمة فارغة)، و"y///" مع $_ المعجمي في النطاق، يمكن أن يكون كلاهما
قم بكتابة سيئة بعد نهاية المكدس. لقد تم إصلاح كلاهما لتمديد
كومة أولا.

· "النموذج الأولي ()" بدون أي وسيطات تستخدم لقراءة العنصر السابق في المكدس، لذا
"طباعة "foo"، النموذج الأولي ()" ستطبع النموذج الأولي لـ foo. لقد تم إصلاحه لاستنتاج $_
بدلاً من. [بيرل #123514] .

· بعض حالات الغواصات ذات الحالة المعجمية المعلنة داخل الغواصات المعلنة مسبقًا يمكن أن تتعطل
مثال عند تقييم سلسلة تتضمن اسم متغير خارجي، ولكن لم يعد
القيام به.

· بعض حالات الحالة المعجمية الفرعية المتداخلة داخل الغواصات المجهولة يمكن أن تسبب "غريبًا".
أخطاء النسخ أو ربما حتى الأعطال.

· عند محاولة إرسال تحذيرات، يستخدم مصحح الأخطاء الافتراضي لـ Perl (بيرل5db.pl) كان في بعض الأحيان
إعطاء "إجراء فرعي غير محدد &DB::db_warn تم الاتصال به" بدلاً من ذلك. هذا الخطأ الذي بدأ
تم إصلاح المشكلة التي تحدث في Perl 5.18. [بيرل #123553]
.

· قد تتعطل بعض الأخطاء النحوية في البدائل، مثل "s/${<>{})//"، وتتعطل
فعلت ذلك منذ بيرل 5.10. (في بعض الحالات لم يبدأ الانهيار حتى الساعة 5.16).
تم إصلاح العطل بالطبع. [بيرل #123542]
.

· إصلاح اثنين من سلسلة تنمو حجم الفيضانات الحسابية. على وجه الخصوص، تكرار
قد يتسبب تعبير مثل "33 x ~3" في حدوث تجاوز كبير للمخزن المؤقت منذ الإخراج الجديد
لم تتم معالجة حجم المخزن المؤقت بشكل صحيح بواسطة "SvGROW()". تعبير مثل هذا الآن
ينتج بشكل صحيح الذعر التفاف الذاكرة. [بيرل #123554]
.

· "formline("@..."، "a")؛" سوف يتعطل. حالة "FF_CHECKNL" في "pp_formline()" لم تكن كذلك
اضبط المؤشر المستخدم لتحديد موضع القطع، مما أدى إلى الحالة "FF_MORE".
تحطمها مع خطأ تجزئة. لقد تم إصلاح هذا. [بيرل #123538]
.

· احتمال تجاوز المخزن المؤقت وتعطله عند تحليل النمط الحرفي أثناء الانتظام
تم إصلاح تجميع التعبير. [بيرل #123604]
.

· تم تعيين "fchmod()" و"futimes()" الآن على $! عندما يفشلون بسبب تمرير ملف مغلق
مقبض. [بيرل #122703] .

· لم يعد "op_free()" و"scalarvoid()" يتعطلان بسبب تجاوز سعة المكدس عند تحرير ملف
شجرة المرجع العودية بعمق. [بيرل #108276]
.

· في Perl 5.20.0، تم إيقاف تشغيل علامة UTF-8 الداخلية عن طريق الخطأ عند الوصول إلى $^N.
من كتلة تعليمات برمجية ضمن تعبير عادي، يتم ترميز القيمة بشكل فعال باستخدام UTF-8.
تم إصلاح هذا. [بيرل #123135]
.

· فشل استدعاء "semctl" لم يعد يقوم بالكتابة فوق العناصر الموجودة على المكدس، مما يعني
أن "(semctl(-1,0,0,0))[0]" لم يعد يعطي تحذيرًا "غير مهيأ".

· أصبح "else{foo()}" بدون مسافة قبل "foo" أفضل الآن في تعيين السطر الصحيح
رقم لهذا البيان. [بيرل #122695]
.

· في بعض الأحيان يتم تحسين المهمة في "@array = Split" بحيث يتم "تقسيم" نفسها
يكتب مباشرة إلى المصفوفة. تسبب هذا في حدوث خطأ، مما منع هذه المهمة من
يتم استخدامها في سياق lvalue. لذلك كان "(@a=split//،"foo")=bar()" خطأً. (هذا الخلل
ربما يعود إلى Perl 3، عندما تمت إضافة التحسين.) وقد تم إصلاحه الآن.
[بيرل #123057] .

· عندما تفشل قائمة الوسيطات، يتم إجراء الاختبارات المحددة بواسطة توقيع روتين فرعي (وهو
لا تزال ميزة تجريبية)، فإن رسائل الخطأ الناتجة تعطي الملف و
رقم السطر الخاص بالمتصل، وليس من الروتين الفرعي المسمى. [بيرل #121374]
.

· يتم استخدام عوامل التقليب (".." و"..." في السياق العددي) للحفاظ على فصل
الحالة لكل مستوى عودي (عدد المرات التي تم فيها استدعاء الكائن الفرعي المتضمن
بشكل متكرر)، خلافا للوثائق. الآن كل إغلاق لديه حالة داخلية واحدة
لكل الوجه بالتخبط. [بيرل #122829]
.

· عامل التشغيل flip-flop (".." في سياق العددية) سيعيد نفس العددية لكل منهما
الوقت، ما لم يتم استدعاء الروتين الفرعي الذي يحتوي عليه بشكل متكرر. الآن يعود دائما
عددي جديد. [بيرل #122829] .

· "استخدام"، "لا"، تسميات البيان، الكتل الخاصة ("البدء") والجراب مسموح بها الآن
أول شيء في كتلة "map" أو "grep"، الكتلة بعد "print" أو "say" (أو غيرها
وظائف) إرجاع مقبض، وضمن "${...}"، "@{...}"، وما إلى ذلك. [Perl #122782]
.

· يقوم عامل التكرار "x" الآن بنشر سياق القيمة إلى وسيطته اليسرى
عند استخدامها في سياقات مثل "foreach". وهذا يسمح لـ "for(($#that_array)x2) { ... }" بـ
العمل كما هو متوقع إذا قامت الحلقة بتعديل $_.

· "(...) x..." في سياق عددي يستخدم لإفساد المكدس إذا كان أحد المعاملات عبارة عن كائن
مع التحميل الزائد "x"، مما يتسبب في سلوك غير منتظم. [بيرل #121827]
.

· غالبا ما يتم تحسين عملية تخصيص العددية المعجمية. على سبيل المثال في "my $x; $x = $y
+ $z"، يتم تحسين عامل التعيين ويكتب عامل الإضافة نتيجته
مباشرة إلى $x. تم إصلاح العديد من الأخطاء المتعلقة بهذا التحسين. تأكيد
قد يفشل المشغلون الموجودون على الجانب الأيمن أحيانًا في تعيين القيمة على الإطلاق أو
قم بتعيين قيمة خاطئة، أو سيتم استدعاء STORE مرتين أو لا يتم الاتصال به على الإطلاق للمتغيرات المرتبطة.
العوامل المتأثرة هي "$foo++" و"$foo--" و"-$foo" ضمن "استخدام عدد صحيح"،
"اقضم بصوت عالي" و"مركز حقوق الإنسان" و"setpgrp".

· قد تكون مهام القائمة في بعض الأحيان غير سليمة إذا انتهى الأمر بنفس العدد على جانبي القائمة
مهمة بسبب استخدام "مقيد" أو "قيم" أو "كل". ستكون النتيجة خاطئة
الحصول على القيمة المعينة.

· "setpgrp($nonzero)" (مع وسيطة واحدة) تم تغييره عن طريق الخطأ في 5.16 ليعني
setpgrp(0). لقد تم إصلاح هذا.

· قد يؤدي "__SUB__" إلى إرجاع قيمة خاطئة أو حتى ذاكرة تالفة ضمن مصحح الأخطاء (ملف
مفتاح "-d") وفي الغواصات التي تحتوي على "eval $string".

· عندما تصبح "sub () { $var }" غير قابلة للسطر، فإنها تُرجع الآن عددًا مختلفًا في كل مرة،
تمامًا كما تفعل الوحدات الفرعية غير القابلة للتضمين، على الرغم من أن لغة Perl لا تزال تعمل على تحسين النسخة بعيدًا في الحالات
حيث لن يحدث أي فرق ملحوظ.

· "my sub f () { $var }" و"sub () : attr { $var }" لم تعد مؤهلة للحصول على
التضمين. الأول سوف ينهار. هذا الأخير سوف يرمي السمات بعيدًا.
تم إجراء استثناء للسمة ":method" غير المعروفة، والتي لا تفعل شيئًا
كثير.

· أصبح الآن تضمين الغواصات بنموذج أولي فارغ أكثر اتساقًا من ذي قبل.
في السابق، كان فرعيًا يحتوي على عبارات متعددة، تم تحسينها جميعًا باستثناء الأخيرة
بعيدًا، لن يكون قابلاً للتضمين إلا إذا كان فرعيًا مجهولًا يحتوي على سلسلة "eval"
أو إعلان "الحالة" أو الإغلاق على متغير معجمي خارجي (أو أي فرعي مجهول
تحت المصحح). الآن أي فرعية يتم طيها إلى ثابت واحد بعد ذلك
تم تحسين البيانات بعيدًا وهي مؤهلة للتضمين. وهذا ينطبق على الأشياء
مثل "sub () {jabber() if DEBUG; 42 }".

تم جعل بعض الإجراءات الفرعية ذات "العودة" الصريحة غير قابلة للتضمين، على عكس
الوثائق، الآن "العودة" تمنع دائمًا التضمين.

· في بعض الأنظمة، مثل VMS، يمكن أن يقوم "crypt" بإرجاع سلسلة غير ASCII. إذا العددية
تم تعيينه لـ يحتوي على سلسلة UTF-8 سابقًا، فلن يتم إيقاف تشغيل "crypt".
علامة UTF-8، مما يؤدي إلى إتلاف القيمة المرجعة. هذا سيحدث مع
"$lexical = سرداب ...".

· لم يعد "crypt" يستدعي "FETCH" مرتين في الوسيطة الأولى المرتبطة.

· مستند هنا غير منتهٍ في السطر الأخير من عامل تشغيل يشبه الاقتباس ("qq[${ <
"/(؟{<

· لم يعد "index()" و"rindex()" يتعطلان عند استخدامهما مع سلاسل يزيد حجمها عن 2 جيجابايت. [بيرل
#121562] .

· تسرب صغير للذاكرة، مقصود مسبقًا، في "PERL_SYS_INIT"/"PERL_SYS_INIT3" في
تم إصلاح بنيات Win32. قد يؤثر هذا على أدوات التضمين التي تقوم بالإنشاء والتدمير بشكل متكرر
محركات بيرل ضمن نفس العملية.

· يقوم "POSIX::localeconv()" الآن بإرجاع البيانات الخاصة بالإعدادات المحلية الأساسية للبرنامج
عند استدعائها من خارج نطاق "استخدام اللغة".

· "POSIX::localeconv()" يعمل الآن بشكل صحيح على الأنظمة الأساسية التي لا تحتوي على "LC_NUMERIC"
و/أو "LC_MONETARY"، أو التي تم تجميع لغة Perl لها لتجاهل أي منهما أو كليهما
من هذه الفئات المحلية. في مثل هذه الظروف، لا توجد الآن أي إدخالات لـ
القيم المقابلة في التجزئة التي يتم إرجاعها بواسطة "localeconv()".

· يقوم "POSIX::localeconv()" الآن بوضع علامة مناسبة على القيم التي يُرجعها كـ UTF-8 أم لا.
في السابق، كان يتم إرجاعها دائمًا على هيئة بايت، حتى لو كان من المفترض أن تكون كذلك
مشفرة كـ UTF-8.

· في نظام التشغيل Microsoft Windows، ضمن نطاق "استخدام الإعدادات المحلية"، حرف POSIX التالي
أعطت الفئات نتائج للعديد من اللغات التي لا تتوافق مع معيار POSIX:
"[[:alnum:]]"، "[[:alpha:]]"، "[[:blank:]]"، "[[:digit:]]"، "[[:graph:]]"،
"[[:lower:]]"، "[[:print:]]"، "[[:punct:]]"، "[[:upper:]]"، "[[:word:]]"، و
"[[:xdigit:]]". كان هذا بسبب عدم تنفيذ Microsoft الأساسي
اتبع المعيار. يتخذ Perl الآن احتياطات خاصة لتصحيح ذلك.

· تم اكتشاف العديد من المشكلات بواسطة Coverityhttp://www.coverity.com/> وثابت.

· يجب أن يعمل "system()" والأصدقاء الآن بشكل صحيح على المزيد من إصدارات Android.

بسبب خطأ، القيمة المحددة من خلال "-Dtargetsh" ل ضبط سينهي
حتى يتم تجاهلها من قبل بعض عمليات البناء. تسبب هذا في تجميع Perls بشكل متقاطع لـ
سينتهي الأمر بنظام Android بإصدارات معيبة من "system()" و"exec()" وbackticks: the
الأوامر ستنتهي بالبحث عن "/ بن / ش" بدلاً من "/system/bin/sh"، وهكذا
تفشل الغالبية العظمى من الأجهزة، مما يترك $! باسم "ENOENT".

· "qr(...\(...\)...)"، و"qr[...\[...\]...]"، و"qr{...\{.. .\}...}" العمل الآن.
في السابق، كان من المستحيل الهروب من هذه الأحرف الثلاثة اليسرى بخط مائل عكسي
ضمن نمط التعبير العادي حيث سيتم أخذها في الاعتبار بخلاف ذلك
الأحرف الأولية، وكان محدد فتح النمط هو الحرف والإغلاق
كان المحدد هو طابعه المرآة.

· "s///e" على سلاسل UTF-8 الملوثة معطوبة "pos()". هذا الخطأ، الذي تم تقديمه في الإصدار 5.20، هو
ثابت الآن. [بيرل #122148] .

· الحدود غير الكلمة في التعبير العادي ("\B") لا تتطابق دائمًا مع نهاية
خيط؛ على وجه الخصوص، "q{} =~ /\B/" غير متطابق. تم تقديم هذا الخطأ في Perl 5.14،
تم إصلاحه الآن. [بيرل #122090] .

· "" P" =~ /(?=.*P)P/" يجب أن يتطابق، لكنه لم يتطابق. تم إصلاح هذا الآن. [بيرل #122171]
.

· قد يؤدي الفشل في تجميع "استخدام Foo" في "التقييم" إلى ترك روتين فرعي "BEGIN" زائف
التعريف، والذي قد ينتج عنه تحذير "إعادة تعريف الروتين الفرعي" عند الاستخدام التالي
من "الاستخدام" أو كتلة "البدء" الأخرى. [بيرل #122107]
.

· يقوم الآن بناء جملة "method { BLOCK } ARGS" بتحليل الوسائط بشكل صحيح إذا كانت تبدأ بـ
قوس الافتتاح. [بيرل #46947] .

· قد يكون لدى المكتبات الخارجية وPerl أفكار مختلفة حول اللغة. هذا هو
يمثل مشكلة عند تحليل سلاسل الإصدار إذا كان الفاصل الرقمي للغة محددًا
تغير. تم تصحيح تحليل الإصدار للتأكد من أنه يتعامل مع اللغات بشكل صحيح.
[بيرل #121930] .

· تم إصلاح الخلل حيث التأكيدات ذات الطول الصفري وكتل التعليمات البرمجية داخل التعبير العادي
يمكن أن يتسبب في رؤية "pos" لقيمة غير صحيحة. [بيرل #122460]
.

· إلغاء مرجعية الثوابت يعمل الآن بشكل صحيح بالنسبة لثوابت typeglob. سابقا
تم تقييد الكرة الأرضية وتم البحث عن اسمها. الآن يتم استخدام الكرة الأرضية نفسها. [بيرل
#69456]

· عند تحليل الشعار ("$" "@" "%" "&)" متبوعًا بالأقواس، لم يعد المحلل اللغوي يحاول
لتخمين ما إذا كان عبارة عن كتلة أو مُنشئ تجزئة (مما يتسبب في حدوث خطأ في بناء الجملة عندما يتم ذلك
يخمن الأخير)، لأنه لا يمكن أن يكون سوى كتلة.

· يقوم الآن "Undef $reference" بتحرير المرجع فورًا، بدلاً من التمسك به
حتى البيان التالي. [بيرل #122556]


· حالات مختلفة يتم فيها استخدام اسم فرعي (التحميل التلقائي، التحميل الزائد، رسائل الخطأ)
تستخدم لتحطم الغواصات المعجمية، ولكن تم إصلاحها.

· يحاول البحث عن الكلمات المستعارة الآن تجنب تنشيط الحزم إذا تبين أن الكلمات المستعارة موجودة
لن يكون اسم روتين فرعي.

· تجميع الثوابت المجهولة (على سبيل المثال، "sub () { 3 }") لم يعد يحذف أيًا منها
روتين فرعي اسمه "__ANON__" في الحزمة الحالية. لم يكن فقط "*__ANON__{CODE}"
تم مسحه، ولكن كان هناك تسرب للذاكرة أيضًا. يعود هذا الخطأ إلى الإصدار Perl 5.8.0.

· تصريحات كعب الروتين مثل "sub f;" و"الفرعية و ()؛" لم تعد تمحو ثوابت
تم الإعلان عن نفس الاسم بواسطة "استخدام ثابت". تم تقديم هذا الخطأ في Perl 5.10.0.

· "qr/[\N{namedتسلسل}]/" يعمل الآن بشكل صحيح في العديد من الحالات.

تشير بعض الأسماء المعروفة بـ "\N{...}" إلى سلسلة من الأحرف المتعددة، بدلاً من
الحرف المفرد المعتاد. تتطابق فئات الأحرف الموجودة بين قوسين بشكل عام مع حرف واحد فقط
الأحرف، ولكن تمت الآن إضافة معالجة خاصة حتى تتمكن من مطابقة الاسم
تسلسلات، ولكن ليس إذا تم عكس الفئة أو تم تحديد التسلسل على أنه
بداية أو نهاية النطاق. في هذه الحالات، التغيير السلوكي الوحيد عن السابق هو
إعادة صياغة طفيفة لرسالة الخطأ الفادحة المقدمة عندما تكون هذه الفئة جزءًا من ملف
"؟[...])" البناء. عندما يقف "[...]" بمفرده، يظهر نفس التحذير غير المميت مثل
قبل يتم رفعه، ويتم استخدام الحرف الأول فقط في التسلسل، مرة أخرى تمامًا كما هو الحال
قبل.

· الثوابت الملوثة التي تم تقييمها في وقت التجميع لم تعد تسبب بيانات غير مرتبطة بها
تصبح ملوثة. [بيرل #122669]

· "open $$fh, ..." الذي ينشط المقبض باسم مثل "main::_GEN_0"، لم يكن كذلك
إعطاء المقبض العدد المرجعي الصحيح، لذلك يمكن أن يحدث مضاعفة مجانية.

· عند تحديد أن الكلمة المجردة هي اسم طريقة، سوف يرتبك المحلل اللغوي إذا كان
"لدينا" الفرعي الذي يحمل نفس الاسم موجود، وابحث عن الطريقة في حزمة ملف
"لدينا" الفرعية، بدلاً من حزمة المدعو.

· لم يعد المحلل اللغوي يرتبك بسبب "\U=" ضمن سلسلة ذات علامات اقتباس مزدوجة. كان عليه أن
إنتاج خطأ في بناء الجملة، ولكن الآن تجميعه بشكل صحيح. [بيرل #80368]


· لقد كانت النية دائمًا أن يقوم مشغلو اختبار الملف "-B" و"-T" بمعالجة الملف
الملفات المشفرة بترميز UTF-8 كنص. (تم تحديث perlfunc ليقول هذا.) سابقًا، كان ذلك
كان من الممكن اعتبار بعض الملفات UTF-8 والتي لم تكن في الواقع UTF-8 صالحة.
تم إصلاح هذا الآن. يعمل المشغلون الآن على منصات EBCDIC أيضًا.

· في ظل بعض الظروف، يتم رفع رسائل التحذير أثناء نمط التعبير العادي
تم إخراج التجميع أكثر من مرة. هذا قد تم اصلاحه.

· قدم بيرل 5.20.0 انحدارًا حيث قام UTF-8 بتشفير التعبير العادي
النمط الذي يحتوي على حرف ASCII صغير واحد لا يتطابق مع الحرف الكبير الخاص به
النظير. وقد تم إصلاح ذلك في كل من الإصدارين 5.20.1 و5.22.0. [بيرل #122655]


· قد يؤدي الطي المستمر إلى قمع التحذيرات بشكل غير صحيح إذا كانت التحذيرات المعجمية ("استخدام
"التحذيرات" أو "لا توجد تحذيرات") لم تكن سارية المفعول وكان $^W خاطئًا في وقت الترجمة و
صحيح في وقت التشغيل.

· قد يؤدي تحميل جداول Unicode أثناء تطابق التعبير العادي إلى التأكيد
يتم إنشاء حالات الفشل تحت تصحيح الأخطاء إذا كانت المباراة السابقة تستخدم نفس الطريقة العادية
تعبير. [بيرل #122747]

· استنساخ الخيط يستخدم للعمل بشكل غير صحيح للغواصات المعجمية، مما قد يتسبب في حدوث أعطال أو
يحرر مزدوج عند الخروج.

· منذ إصدار Perl 5.14.0، تم حذف $SomePackage::{__ANON__} ثم إلغاء تعريف مجهول
قد يؤدي الروتين الفرعي إلى إتلاف الأشياء داخليًا، مما يؤدي إلى تعطل Devel::Peek أو B.pm
إعطاء بيانات لا معنى لها. لقد تم إصلاح هذا.

· يقوم "(caller $n)[3]" الآن بالإبلاغ عن أسماء المفردات الفرعية، بدلاً من التعامل معها على أنها
"(مجهول)".

· "نوع القائمة الفرعية" يدعم الآن استخدام المعجم الفرعي كإجراء روتيني للمقارنة.

· اسم مستعار (على سبيل المثال، عبر "*x = *y") يمكن أن يخلط بين مهام القائمة التي تذكر الاثنين
أسماء لنفس المتغير على كلا الجانبين، مما يتسبب في تعيين قيم خاطئة.
[بيرل #15667]

· يمكن أن تتسبب أدوات إنهاء المستند الطويلة هنا في قراءة سيئة على سطور قصيرة من الإدخال. هذا قد
تم إصلاحها. ومن المشكوك فيه أن يكون أي حادث قد حدث. يعود هذا الخطأ إلى
عندما تم تقديم المستندات هنا في لغة Perl 3.000 قبل خمسة وعشرين عامًا.

· تحسين "الانقسام" للتعامل مع "الانقسام /^/" مثل "الانقسام /^/m" كان أمرًا مؤسفًا
من الآثار الجانبية أيضًا معالجة "split /\A/" مثل "split /^/m"، وهو ما لا ينبغي فعله.
لقد تم إصلاح هذا. (لاحظ، مع ذلك، أن "split /^x/" لا يتصرف مثل
"split /^x/m"، والذي يعتبر أيضًا خطأ وسيتم إصلاحه في المستقبل
الإصدار.) [بيرل #122761]

· يمكن أن يحدث ارتباك في بناء جملة "my Class $var" غير المعروفة (راجع الحقول والسمات).
في نطاق "استخدام utf8" إذا كانت "الفئة" ثابتة تحتوي قيمتها على Latin-1
حرفا.

· قفل وفتح القيم عبر Hash::Util أو "Internals::SvREADONLY" لم يعد موجودًا
أي تأثير على القيم التي كانت للقراءة فقط في البداية. سابقا، فتح مثل هذا
قد تؤدي القيم إلى حدوث أعطال أو توقف أو سلوك غير منتظم آخر.

· بعض بنيات "(؟(...)...)" غير المنتهية في التعبيرات العادية قد تتعطل
أو إعطاء رسائل خطأ خاطئة. "/(?(1)/" هو أحد الأمثلة على ذلك.

· "pack "w"، $tied" لم تعد تستدعي FETCH مرتين.

· قائمة المهام مثل "($x, $z) = (1, $y)" تعمل الآن بشكل صحيح إذا كان $x و $y
مستعار من "foreach".

· بعض الأنماط بما في ذلك كتل التعليمات البرمجية التي تحتوي على أخطاء في بناء الجملة، مثل "/ (?{(^{})/"، قد تكون كذلك
تعليق التأكيدات أو فشلها في تصميمات تصحيح الأخطاء. الآن ينتجون أخطاء.

· تم إصلاح فشل التأكيد عند تحليل "الفرز" مع تمكين التصحيح. [بيرل
#122771] .

· "*a = *b; @a = Split //, $b[1]" يمكن أن تؤدي إلى قراءة سيئة وتؤدي إلى نتائج غير هامة.

· في "() = @array = Split"، لم يعد "() =" في البداية يربك المُحسِّن
على افتراض الحد من 1.

· لم تعد التحذيرات الفادحة تمنع ظهور أخطاء في بناء الجملة. [بيرل #122966]
.

· تم إصلاح خطأ التحويل المزدوج إلى المزدوج NaN على نظام VMS. بالنسبة لـ NaNs الهادئة (وفقط على
تم إنتاج إيتانيوم، وليس ألفا) اللانهاية السالبة بدلاً من NaN.

· تم إصلاح المشكلة التي تسببت في ترك "make distclean" لبعض الملفات بشكل غير صحيح.
[بيرل #122820] .

· يقوم AIX الآن بتعيين الطول في "getsockopt" بشكل صحيح. [بيرل #120835]
. [سي بان #120835]
. [سي بان #91183]
.

· يمكن لمرحلة التحسين في تجميع التعبيرات العادية أن تستمر "إلى الأبد" وتستنفد كل شيء
الذاكرة في ظل ظروف معينة. ثابت الآن. [بيرل #122283]
.

· نص الاختبار t/op/crypt.t يستخدم الآن خوارزمية SHA-256 إذا كانت الخوارزمية الافتراضية هي
تعطيل، بدلا من إعطاء الفشل. [بيرل #121591]
.

· تم إصلاح خطأ واحد عند تحديد حجم المصفوفة المشتركة. [بيرل #122950]
.

· تم إصلاح الخلل الذي قد يتسبب في دخول بيرل في حلقة لا نهائية أثناء التجميع. في
خاص، أ في حين(1) ضمن قائمة فرعية، على سبيل المثال

sub foo { () = ($a، $b، ($c، do { في حين(1) {} })) }

تم تقديم الخطأ في الإصدار 5.20.0 [Perl #122995]
.

· في Win32، إذا كان المتغير "محليًا" في عملية زائفة تم تشعبها لاحقًا،
تسببت استعادة القيمة الأصلية في العملية الزائفة التابعة في تلف الذاكرة و
تعطل في العملية الزائفة التابعة (وبالتالي عملية نظام التشغيل). [بيرل #40565]
.

· قد يؤدي استدعاء "كتابة" في تنسيق يحتوي على حقل "^**" إلى حدوث حالة من الذعر في "sv_chop()" إذا
لم تكن هناك وسائط كافية أو إذا كان المتغير المستخدم لملء الحقل فارغًا.
[بيرل #123245] .

· تظهر الآن الأسماء الفرعية المعجمية غير ASCII بدون زائدة غير المرغوب فيها عندما تظهر عن طريق الخطأ
الرسائل.

· لم يعد النموذج الأولي للروتين الفرعي "\@" يقوم بتسوية المصفوفات ذات الأقواس (مع أخذ a
إشارة إلى كل عنصر)، ولكنها تأخذ إشارة إلى المصفوفة نفسها. [بيرل #47363]
.

· الكتلة التي لا تحتوي على أي شيء باستثناء حلقة "for" على النمط C قد تؤدي إلى إتلاف المكدس،
مما يتسبب في فقدان العناصر الموجودة خارج الكتلة أو استبدال العناصر. هذا
يمكن أن يحدث مع "map { for(...){...} } ..." ومع القوائم التي تحتوي على "do {
ل(...){...} }". [بيرل #123286] .

· يقوم "scalar()" الآن بنشر سياق القيمة l، بحيث يمكن لـ "for(scalar($#foo)) { ... }"
قم بتعديل $#foo من خلال $_.

· لم يعد "qr/@array(?{block})/" يموت مع "نسخة غريبة من ARRAY". [بيرل #123344]
.

· "eval '$variable'" في الإجراءات الفرعية المسماة المتداخلة قد يبحث أحيانًا عن ملف عالمي
متغير حتى مع وجود متغير معجمي في النطاق.

· في الإصدار 5.20.0 من Perl، "فرز CORE::fake" حيث كلمة "fake" هي أي شيء آخر غير الكلمة الرئيسية،
بدأ في تقطيع آخر 6 أحرف ومعالجة النتيجة كاسم فرعي للفرز.
تمت استعادة السلوك السابق المتمثل في التعامل مع "CORE::fake" كاسم فرعي للفرز.
[بيرل #123410] .

· خارج نطاق "استخدام utf8"، لا يُسمح بالمتغير المعجمي اللاتيني-1 المكون من حرف واحد. ال
رسالة الخطأ الخاصة بها، "لا يمكن استخدام $foo..." العامة، كانت تعطي البيانات المهملة بدلاً من ملف
اسم المتغير.

· كان "readline" الموجود على مؤشر غير موجود يتسبب في ظهور "${^LAST_FH}" مرجعًا إلى
عددية غير محددة (أو تفشل في التأكيد). الآن أصبح "${^LAST_FH}" غير محدد.

· "(...) x ..." في سياق باطل يطبق الآن السياق العددي على الوسيطة اليسرى،
بدلاً من السياق تم استدعاء الفرع الحالي. [Perl #123020]
.

معروف مشاكل


· "حزمة" - نان على بيرل المترجمة مع Visual C 6 لا تتصرف بشكل صحيح، مما يؤدي
لفشل الاختبار في t/op/infnan.t. [بيرل 125203]


· الهدف هو أن تتمكن لغة Perl من إعادة ترجمتها للعمل بشكل جيد على أي Unicode
إصدار. في Perl 5.22، أقدم إصدار من هذا القبيل هو Unicode 5.1 (الحالي هو
(متّى 7.0، XNUMX).

· منصات EBCDIC

· لا تعطي عوامل التشغيل "cmp" (وبالتالي "الفرز") بالضرورة النتائج الصحيحة
عندما يكون كلا المعاملين عبارة عن سلاسل مشفرة بـ UTF-EBCDIC ويوجد مزيج من ASCII
و/أو أحرف التحكم، إلى جانب الشخصيات الأخرى.

· النطاقات التي تحتوي على "\N{...}" في مشغلي الترجمة الصوتية "tr///" (و "y///")
يتم التعامل معها بشكل مختلف عن النطاقات المكافئة في أنماط التعبير العادي.
ينبغي عليهم، ولكن لا يفعلون ذلك، أن يتسببوا في التعامل مع القيم الموجودة في النطاقات على أنها
نقاط رمز Unicode، وليس تلك الأصلية. ("الإصدار 8 التعبيرات العادية" في
يقدم perlre تفاصيل حول كيفية العمل.)

· التشفير والترميز معطلان في الغالب.

· العديد من وحدات CPAN التي يتم شحنها مع النواة تظهر اختبارات فاشلة.

· "pack"/"unpack" بتنسيق "U0" قد لا يعمل بشكل صحيح.

· من المعروف أن الوحدات التالية بها فشل في الاختبار مع هذا الإصدار من Perl. في
تم إرسال العديد من التصحيحات في العديد من الحالات، لذا نأمل أن تكون هناك إصدارات جديدة قريبًا:

· ب::إنشاء الإصدار 1.50

· ب::Utils الإصدار 0.25

· كورو الإصدار 6.42

· نسخة الراقصة 1.3130

· البيانات::الاسم المستعار الإصدار 1.18

· البيانات::تفريغ::Streamer الإصدار 2.38

· البيانات :: الإصدار 0.63

· التطوير :: نسخة التجسس 0.07

· المستحضر الإصدار 0.34

· المعجمي::Var الإصدار 0.009

· LWP::ConsoleLogger الإصدار 0.000018

· ميسون الإصدار 2.22

· نغكسكويو الإصدار 0.02

· بادري الإصدار 1.00

· تحليل::الكلمة الرئيسية 0.08

سجل الوفيات


توفي بريان ماكولي في 8 مايو 2015. وكان ملصقًا متكررًا لـ Usenet وPerl Monks و
منتديات بيرل الأخرى، وقدم العديد من مساهمات CPAN تحت الاسم المستعار NOBULL، بما في ذلك
الأسئلة الشائعة حول بيرل. لقد حضر كل مؤتمرات YAPC::Europe تقريبًا، وساعد بالفعل في التنظيم
YAPC::Europe 2006 وQA Hackathon 2009. ذكائه وسعادته بالأنظمة المعقدة
كانت واضحة بشكل خاص في حبه لألعاب الطاولة؛ العديد من تجار لغة بيرل سيكونون معجبين بها
ذكريات لعب 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:

آرون كرين، أبهيجيت مينون سين، أبيجيل، ألبرتو سيموس، أليكس سولوفي، أليكس فانديفر،
ألكسندر سيورني، ألكسندر (ميدنايت) جوسيت، أندرياس كونيج، أندرياس فوجيلي، أندرو
فريش، آندي دوجيرتي، أنتوني هيدنج، أرسطو باجالتزيس، بريان دي فوي، بريان فريزر،
تشاد جرانوم، كريس "بينجوس" ويليامز، كريج إيه بيري، داغفين إلماري مانساكر، دانيال
دراغان، دارين ماكبرايد، ديف رولسكي، ديفيد جولدن، ديفيد ميتشل، ديفيد ويلر، ديمتري
تيخونوف، دوغ بيل، إي. تشوروبا، إد جي، إريك هيرمان، الأب كريسوستوموس، جورج جرير،
جلين دي جولدن، جراهام نوب، إتش ميرين براند، هربرت برونونج، هوغو فان دير ساندين، جيمس
إي كينان، جيمس مكوي، جيمس راسباس، جان دوبوا، جاركو هيتانيمي، ياسمين نجان، جيري
د. هيدن، جيم كرومي، جون جوديير، كافكا، كارين إثيريدج، كارل ويليامسون، كينت
فريدريك، كمكس، لايوس فيريس، ليون تيمرمانز، لوكاس ماي، ماتيو أرنولد، ماثيو هورسفال،
ماكس مايشين، مايكل بانك، نيكولاس كلارك، نيلز ثيكيير، نيكو تيني، نورمان كوخ،
أوليفييه مينجو، بيتر جون أكلام، بيتر مارتيني، بيتر بيساكس، فيليب بروهات (كتاب)،
بيير بوجوسيان، رافائيل جارسيا سواريز، راندي ستونر، ريني أوربان، ريكاردو سيجنيز، روب
هولز، روستيسلاف سكودنوف، سوير إكس، شيراكاتا كينتارو، شلومي فيش، سيزيف، سلافن
ريزيتش، سميلر، ستيفن مولر، ستيف هاي، سوليفان بيك، سايبر، تاديوس سوكسييرز، توماس
سيبلي، تود رينالدو، توني كوك، فنسنت بيت، فلاديمير ماريك، ياروسلاف كوزمين، إيف أورتن،
إيفار أرنفجوير بجارماسون.

يكاد يكون من المؤكد أن القائمة أعلاه غير مكتملة حيث يتم إنشاؤها تلقائيًا من
سجل التحكم في الإصدار. على وجه الخصوص ، فإنه لا يتضمن أسماء (كثيرا جدا
أقدر) المساهمين الذين أبلغوا عن المشكلات لمتتبع أخطاء Perl.

نشأت العديد من التغييرات المضمنة في هذا الإصدار في وحدات CPAN المضمنة في
جوهر بيرل. نحن ممتنون لمجتمع CPAN بأكمله لمساعدة Perl على الازدهار.

للحصول على قائمة كاملة لجميع المساهمين التاريخيين في Perl ، يرجى الاطلاع على مؤلفون
ملف في توزيع مصدر Perl.

التقارير البق


إذا وجدت ما تعتقد أنه خطأ ، فيمكنك التحقق من المقالات المنشورة مؤخرًا في
مجموعة أخبار comp.lang.perl.misc وقاعدة بيانات Perl Bug على . هناك
قد تكون أيضًا معلومات علىhttp://www.perl.org/> ، صفحة Perl الرئيسية.

إذا كنت تعتقد أن لديك خطأ لم يتم الإبلاغ عنه ، فالرجاء تشغيل برنامج perlbug المضمن في
إطلاق سراحك. تأكد من تقليم الخطأ الخاص بك إلى حالة اختبار صغيرة ولكنها كافية. علة الخاص بك
التقرير ، جنبًا إلى جنب مع ناتج "perl -V" ، سيتم إرساله إلى [البريد الإلكتروني محمي] أن تكون
حللها فريق بيرل.

إذا كان الخطأ الذي تبلغ عنه له آثار أمنية ، مما يجعله غير مناسب
إرسال إلى قائمة بريدية مؤرشفة بشكل عام ، ثم الرجاء إرسالها إلى
[البريد الإلكتروني محمي]. يشير هذا إلى اشتراك مغلق بريدية غير مؤرشفة
القائمة ، والتي تشمل جميع الملتزمون الأساسيون ، والذين سيكونون قادرين على المساعدة في تقييم الأثر
من المشكلات ، وتحديد حل لها ، والمساعدة في تنسيق إصدار التصحيحات إلى
التخفيف من المشكلة أو إصلاحها عبر جميع الأنظمة الأساسية التي تدعم Perl. من فضلك فقط
استخدم هذا العنوان لقضايا الأمان في Perl core ، وليس للوحدات النمطية بشكل مستقل
وزعت على CPAN.

استخدم perl5220delta عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

أوامر لينكس

Ad




×
الإعلانات
❤️تسوق أو احجز أو اشترِ هنا - بدون تكلفة، مما يساعد على إبقاء الخدمات مجانية.