الإنجليزيةالفرنسيةالإسبانية

OnWorks فافيكون

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

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

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

برنامج:

اسم


perl5180delta - ما الجديد في Perl v5.18.0

الوصف


يصف هذا المستند الاختلافات بين الإصدار v5.16.0 والإصدار v5.18.0.

إذا كنت تقوم بالترقية من إصدار سابق مثل v5.14.0، فاقرأ أولاً perl5160delta،
الذي يصف الاختلافات بين الإصدار v5.14.0 والإصدار 5.16.0.

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


جديد آلية For تجريبي ملامح
ستتطلب الميزات التجريبية المضافة حديثًا هذه التعويذة الآن:

لا توجد تحذيرات "تجريبية::feature_name"؛
استخدام الميزة "feature_name"؛ # سيحذر بدون السطر السابق

توجد فئة تحذيرات جديدة تسمى "تجريبية" تحتوي على تحذيرات تفيد بأن
تنبعث ميزة pragma عند تمكين الميزات التجريبية.

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

بالقول

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

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

نظرًا لأن بعض الميزات (مثل "~~" أو "my $_") تُصدر الآن تحذيرات تجريبية، ويمكنك فعل ذلك
تريد تعطيلها في التعليمات البرمجية التي يتم تشغيلها أيضًا على Perls التي لا تتعرف على هذه التحذيرات
الفئات، فكر في استخدام براغما "if" مثل هذا:

no if $] >= 5.018,angers => "experimental::feature_name";

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

مزيج تعديل
ستكون التغييرات التي يتم إجراؤها على تنفيذ التجزئات في Perl v5.18.0 واحدة من أكثر التغييرات وضوحًا
تغييرات على سلوك التعليمات البرمجية الموجودة.

افتراضيًا، قد يتم الآن توفير متغيري تجزئة متميزين لهما مفاتيح وقيم متطابقة
محتوياتها بترتيب مختلف حيث كانت متطابقة سابقًا.

عند مواجهة هذه التغييرات، فإن مفتاح التنظيف منها هو قبول ذلك تجزئات
. غير مرتبة مجموعات والتصرف وفقا لذلك.

مزيج العشوائية

أصبحت البذرة التي تستخدمها وظيفة تجزئة Perl عشوائية الآن. وهذا يعني أن الترتيب الذي
سيتم إرجاع المفاتيح/القيم من وظائف مثل "keys()" و"values()" و"each()".
تختلف من تشغيل لآخر.

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

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

علاوة على ذلك، كل تجزئة لها ترتيب تكرار خاص بها، مما يجعل الأمر أكثر صعوبة
لتحديد ما هي بذور التجزئة الحالية.

جديد مزيج وظائف

يتضمن الإصدار 5.18 من Perl دعمًا لوظائف التجزئة المتعددة، كما قام بتغيير الإعداد الافتراضي (إلى
ONE_AT_A_TIME_HARD)، يمكنك اختيار خوارزمية مختلفة عن طريق تحديد رمز عند الترجمة
وقت. للحصول على القائمة الحالية، راجع تثبيت وثيقة. لاحظ أنه اعتبارًا من Perl v5.18 نحن
يمكن أن يوصي فقط باستخدام الافتراضي أو SIPHASH. ومن المعروف أن جميع الآخرين لديهم
القضايا الأمنية وهي لأغراض البحث فقط.

بيرل_هاش_SEED بيئة متغير الآن يأخذ a عرافة قيمنا

لم يعد "PERL_HASH_SEED" يقبل عددًا صحيحًا كمعلمة؛ بدلا من ذلك القيمة
من المتوقع أن تكون قيمة ثنائية مشفرة في سلسلة سداسية عشرية، مثل "0xf5867c55039dc724". هذا
هو جعل البنية التحتية تدعم بذور التجزئة ذات الأطوال التعسفية، والتي قد تتجاوز
أن من عدد صحيح. (يستخدم SipHash بذرة بحجم 16 بايت.)

بيرل_بيرتورب_كيز بيئة متغير وأضاف

يسمح متغير البيئة "PERL_PERTURB_KEYS" للشخص بالتحكم في مستوى
العشوائية المطبقة على "المفاتيح" والأصدقاء.

عندما تكون قيمة "PERL_PERTURB_KEYS" 0، فلن يقوم Perl بترتيب المفاتيح بشكل عشوائي على الإطلاق. الفرصة
أن تغييرات "المفاتيح" بسبب الإدراج ستكون هي نفسها كما في Perls السابقة، بشكل أساسي فقط
عندما يتغير حجم الدلو.

عندما تكون قيمة "PERL_PERTURB_KEYS" هي 1، سيقوم Perl بتوزيع المفاتيح بشكل عشوائي بطريقة غير قابلة للتكرار. ال
ستكون فرصة تغير "المفاتيح" بسبب الإدخال عالية جدًا. هذا هو الأكثر أمانا
والوضع الافتراضي.

عندما يكون "PERL_PERTURB_KEYS" هو 2، سيقوم Perl بتوزيع المفاتيح بشكل عشوائي بطريقة قابلة للتكرار. معاد
تشغيل نفس البرنامج يجب أن ينتج نفس المخرجات في كل مرة.

يشير "PERL_HASH_SEED" إلى إعداد "PERL_PERTURB_KEYS" غير افتراضي. جلسة
"PERL_HASH_SEED=0" (0 واحد بالضبط) يعني ضمناً "PERL_PERTURB_KEYS=0" (التوزيع العشوائي لمفتاح التجزئة
عاجز)؛ تعيين "PERL_HASH_SEED" على أي قيمة أخرى يعني ضمناً "PERL_PERTURB_KEYS=2"
(التوزيع العشوائي لمفتاح التجزئة الحتمي والقابل للتكرار). تحديد "PERL_PERTURB_KEYS"
صراحة إلى مستوى مختلف يتجاوز هذا السلوك.

التجزئة::Util::hash_seed() الآن عائدات a سلسلة

التجزئة::Util::hash_seed() تقوم الآن بإرجاع سلسلة بدلاً من عدد صحيح. هذا هو لجعل
تدعم البنية التحتية بذور التجزئة ذات الأطوال التعسفية التي قد تتجاوز طول
عدد صحيح. (يستخدم SipHash بذرة بحجم 16 بايت.)

الناتج of بيرل_هاش_SEED_DEBUG لديها كان غير

متغير البيئة PERL_HASH_SEED_DEBUG الآن يجعل Perl يعرض كلاً من دالتي التجزئة
تم بناء بيرل مع، البذرة، بالرمز السداسي، تُستخدم لهذه العملية. تحليل الكود هذا
يجب أن يتغير الإخراج، في حالة وجوده، ليتوافق مع التنسيق الجديد. مثال الجديد
شكل:

$ PERL_HASH_SEED_DEBUG=1 ./perl -e1
HASH_FUNCTION = MURMUR3 HASH_SEED = 0x1476bb9f

إرفع مستوى باقتك إلى يونيكود 6.2
يدعم Perl الآن Unicode 6.2. توجد قائمة بالتغييرات من Unicode 6.1 في
<http://www.unicode.org/versions/Unicode6.2.0>.

حرف الاسم اسماء مستعارة قد الآن تتضمن نطاق غير لاتيني 1 الأحرف
من الممكن تحديد الأسماء الخاصة بك للأحرف لاستخدامها في "\N{...}"،
"charnames::vianame()"، وما إلى ذلك. يمكن الآن أن تتكون هذه الأسماء من أحرف من ملف
نطاق Unicode بأكمله. وهذا يسمح للأسماء أن تكون بلغتك الأم، وليس فقط
إنجليزي. تنطبق قيود معينة على الأحرف التي يمكن استخدامها (لا يمكنك تحديدها
اسم يحتوي على علامات الترقيم، على سبيل المثال). راجع "الأسماء المستعارة المخصصة" في الأسماء.

جديد DTrace المجسات
تمت إضافة تحقيقات DTrace الجديدة التالية:

· "الدخول المفتوح"

· "تحميل الملف"

· "ملف محمل"

"${^LAST_FH}"
يوفر هذا المتغير الجديد الوصول إلى مقبض الملف الذي تمت قراءته آخر مرة. هذا ال
المقبض الذي يستخدمه $. وبواسطة "أخبر" و"eof" بدون وسيطات.

منتظم التعبير بكيج عمليات
هذا هو تجريبي ميزة للسماح بالمطابقة مع الاتحاد والتقاطع وما إلى ذلك،
من مجموعات نقاط التعليمات البرمجية، على غرار Unicode::Regex::Set. ويمكن استخدامه أيضًا للتمديد
معالجة "/x" لفئات الأحرف [بين قوسين]، وكبديل للفئات المعرفة من قبل المستخدم
الخصائص، مما يسمح بتعبيرات أكثر تعقيدًا مما تفعله. انظر "قوس ممتد
فئات الأحرف" في perlrecharclass.

معجمي الوظائف الفرعية
لا تزال هذه الميزة الجديدة قيد النظر تجريبي. لتمكينه:

استخدم 5.018 ؛
لا توجد تحذيرات "تجريبية::lexical_subs"؛
استخدام ميزة "lexical_subs"؛

يمكنك الآن إعلان الإجراءات الفرعية باستخدام "state sub foo" و"my sub foo" و"our sub foo".
("تتطلب الحالة الفرعية" تمكين ميزة "الحالة"، إلا إذا قمت بكتابتها على هذا النحو
"CORE::state sub foo".)

تقوم "الحالة الفرعية" بإنشاء روتين فرعي مرئي ضمن النطاق المعجمي الذي تم الإعلان عنه فيه.
تتم مشاركة الروتين الفرعي بين المكالمات إلى الفرع الفرعي الخارجي.

يعلن "my sub" عن روتين فرعي معجمي يتم إنشاؤه في كل مرة يتم فيها إنشاء الكتلة المرفقة
دخلت. عادةً ما تكون "state sub" أسرع قليلاً من "my sub".

يعلن "الفرعي الخاص بنا" عن اسم مستعار معجمي للروتين الفرعي للحزمة الذي يحمل نفس الاسم.

لمزيد من المعلومات، راجع "الروتينات الفرعية المعجمية" في perlsub.

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

المزيد جوهر:: الغواصات
تمت إضافة العديد من الوظائف المضمنة كإجراءات فرعية إلى مساحة الاسم CORE:: -
وهي الكلمات الرئيسية غير القابلة للتجاوز والتي يمكن تنفيذها بدون موزعين مخصصين:
"محدد"، "حذف"، "موجود"، "كرة أرضية"، "pos"، "نموذج أولي"، "عددي"، "تقسيم"، "دراسة"، و
"غير محدد".

نظرًا لأن بعض هذه النماذج تحتوي على نماذج أولية، فقد تم تغيير "prototype('CORE::...')" حتى لا يتم إنشاء
التمييز بين الكلمات الرئيسية القابلة للتجاوز وغير القابلة للتجاوز. هذا لجعل
"النموذج الأولي ('CORE::pos')" يتوافق مع "النموذج الأولي (&CORE::pos)".

"قتل" مع سلبي بسيطة أسماء
لقد سمحت كلمة "kill" دائمًا برقم إشارة سلبي، مما يؤدي إلى قتل مجموعة العملية بدلاً من ذلك
من عملية واحدة. كما سمح بأسماء الإشارات. لكنها لم تتصرف
باستمرار، لأنه تم التعامل مع أسماء الإشارات السالبة على أنها 0. الآن أسماء الإشارات السالبة
مثل "-INT" يتم دعمها ومعاملتها بنفس طريقة -2 [Perl #112990].

حماية


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

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

"اللغة المحلية::Maketext" سمح الكود حقن بواسطة a خبيث قالب
إذا تمكن المستخدمون من توفير سلسلة ترجمة إلى Locale::Maketext، فيمكن استخدام ذلك من أجل
استدعاء إجراءات Perl الفرعية التعسفية المتوفرة في العملية الحالية.

لقد تم إصلاح هذه المشكلة، ولكن لا يزال من الممكن استدعاء أي طريقة توفرها
"Locale::Maketext" نفسها أو فئة فرعية تستخدمها. واحدة من هذه الأساليب بدورها
سوف يستدعي الروتين الفرعي "sprintf" الخاص بـ Perl.

باختصار، يعد السماح للمستخدمين بتوفير سلاسل الترجمة دون تدقيقها أمرًا سيئًا
الفكرة.

تم توثيق مشكلة عدم الحصانة هذه في CVE-2012-6329.

تجنب دعوة memeset مع a سلبي عد
كود Perl مكتوب بشكل سيئ يسمح للمهاجم بتحديد عدد سلسلة "x" الخاصة بـ Perl
يمكن أن يتسبب عامل التكرار بالفعل في هجوم رفض الخدمة لاستنفاد الذاكرة. عيب في
يمكن لإصدارات Perl قبل الإصدار v5.15.5 تصعيد ذلك إلى تجاوز سعة المخزن المؤقت للكومة؛ مرفق مع
إصدارات glibc قبل 2.16 ، من المحتمل أن تسمح بتنفيذ تعليمات برمجية عشوائية.

تم تعيين المعرف CVE-2012-5195 للخلل الموجه إلى هذا الالتزام وكان
بحث بواسطة تيم براون.

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


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

An غير معروف حرف الاسم in "\ن{...}" is الآن a بناء الجملة خطأ
في السابق، تم التحذير، وتم استبدال Unicode REPLACEMENT CHARACTER. يونيكود الآن
توصي بأن يكون هذا الموقف خطأ في بناء الجملة. كما أن السلوك السابق أدى إلى البعض
تحذيرات وسلوكيات مربكة، وبما أن الحرف البديل ليس له فائدة أخرى
بدلاً من كونه بديلاً لشخصية غير معروفة، فإن أي كود به هذه المشكلة يكون به أخطاء.

سابقا إهمال الأحرف in "\ن{}" حرف الاسم اسماء مستعارة . الآن أخطاء.
منذ الإصدار 5.12.0، تم إيقاف استخدام أحرف معينة في "\N{...}" المعرفة من قبل المستخدم.
أسماء الشخصيات. هذه تسبب الآن خطأ في بناء الجملة. على سبيل المثال، أصبح الآن خطأ ل
يبدأ الاسم برقم، مثل في

$undraftable = "\N{4F}"; # خطأ في بناء الجملة!

أو أن يكون لديك فواصل في أي مكان في الاسم. راجع "الأسماء المستعارة المخصصة" في الأسماء.

"\N{بيل}" الآن يشير إلى U + 1F514 بدلًا من ذلك of U + 0007
أعاد Unicode 6.0 استخدام الاسم "BELL" لنقطة رمز مختلفة عما كان عليه تقليديًا
عنى. منذ إصدار Perl v5.14، لا يزال استخدام هذا الاسم يشير إلى U+0007، ولكنه قد يؤدي إلى رفع a
تحذير الإهمال. الآن، يشير "BELL" إلى U+1F514، واسم U+0007 هو "ALERT".
تم تحديث جميع الوظائف الموجودة في أسماء الأحرف بشكل مماثل.

جديد قيود in متعدد الشخصيات حالة الأحرف مطابقة in منتظم التعبير بين قوسين
حرف فصول دراسية
قامت Unicode الآن بسحب توصياتها السابقة بشأن التعبيرات العادية
التعامل تلقائيًا مع الحالات التي يمكن أن يتطابق فيها حرف واحد مع عدة أحرف
بشكل غير حساس، على سبيل المثال، الحرف LATIN SMALL LETTER SHARP S والتسلسل "ss".
هذا لأنه تبين أنه من غير العملي القيام بذلك بشكل صحيح على الإطلاق
ظروف. ولأن بيرل حاولت القيام بذلك بأفضل ما يمكنها، فسوف تستمر في القيام بذلك
لذا. (نحن ندرس خيارًا لإيقاف تشغيله.) ومع ذلك، هناك قيد جديد قيد التنفيذ
تتم إضافتها إلى مثل هذه التطابقات عند حدوثها في فئات الأحرف [بين قوسين]. كان الناس
تحديد أشياء مثل "/[\0-\xff]/i"، والمفاجأة أنها تتطابق مع الاثنين
تسلسل الأحرف "ss" (نظرًا لأن LATIN SMALL LETTER SHARP S يحدث في هذا النطاق). هذا
السلوك غير متوافق أيضًا مع استخدام خاصية بدلاً من النطاق:
يتضمن "\p{Block=Latin1}" أيضًا الحروف اللاتينية الصغيرة SHARP S، ولكن "/[\p{Block=Latin1}]/i"
لا يتطابق مع "SS". القاعدة الجديدة هي أنه لكي تكون هناك حالة متعددة الأحرف-
مطابقة غير حساسة ضمن فئة الأحرف بين قوسين، يجب أن يكون الحرف واضحًا
المدرجة، وليس كنقطة نهاية للنطاق. وهذا يطيع بشكل أوثق مبدأ
الأقل دهشة. راجع "فئات الأحرف بين قوسين" في perlrecharclass. لاحظ أن أ
الخطأ [Perl #89774]، الذي تم إصلاحه الآن كجزء من هذا التغيير، منع السلوك السابق من
العمل بشكل كامل.

صريح القواعد For متغير أسماء معرفات
بسبب خطأ ما، تم تغيير أسماء المتغيرات ذات الأحرف الفردية في الإصدار 5.16 بالكامل
غير مقيد. وهذا فتح الباب أمام أنواع عديدة من الجنون. اعتبارًا من الإصدار 5.18، هذه الآن
اتبع قواعد المعرفات الأخرى، بالإضافة إلى قبول الأحرف التي تطابق
الخاصية "\p{POSIX_Punct}".

لم يعد هناك أي اختلاف في تحليل المعرفات المحددة باستخدام الأقواس
مقابل دون الأقواس. على سبيل المثال، يستخدم Perl للسماح بـ "${foo:bar}" (مع ملف
القولون) ولكن ليس $foo:bar. والآن بعد أن تم التعامل مع كليهما من خلال مسار تعليمات برمجية واحد، أصبحا كلاهما
تعامل بنفس الطريقة: كلاهما حرام. لاحظ أن هذا التغيير يدور حول نطاق
المعرفات الحرفية المسموح بها، وليس التعبيرات الأخرى.

عمودي علامات التبويب . الآن بيضاء
لا يمكن لأحد أن يتذكر سبب عدم تطابق "\s" مع "\cK"، علامة التبويب العمودية. الآن هو كذلك. منح
نظرًا للندرة الشديدة لهذه الشخصية، فمن المتوقع حدوث القليل جدًا من الكسر. وقال، وهنا
ماذا يعني:

يتطابق الآن "\s" في التعبير العادي مع علامة تبويب رأسية في جميع الظروف.

يتم تجاهل علامات التبويب الرأسية الحرفية في التعبير العادي الحرفي عند استخدام المُعدِّل "/x".

يتم الآن تجاهل علامات التبويب الرأسية البادئة، بمفردها أو ممزوجة بمسافات بيضاء أخرى
تفسير سلسلة كرقم. على سبيل المثال:

$dec = "\cK \t 123";
$hex = " \cK \t 0xF";

قل 0 + $dec; # كان 0 مع تحذير، الآن 123
قل int $dec; # كان 0، والآن 123
قل أكتوبر $hex؛ # كان 0 والآن 15

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

أكثر صرامة تحليل of الاستبدال إستبدال
لم يعد من الممكن إساءة استخدام الطريقة التي يقوم بها المحلل اللغوي بتحليل "s///e" مثل هذا:

%_=(_"مجرد شيء آخر");
$_="متسلل بيرل,\n";
s//_}->{_/e;print

"منح" الآن اسماء مستعارة هيه شامل $_
بدلاً من تعيين $_ المعجمي الضمني، فإن "المعطى" يجعل $_ العالمي اسمًا مستعارًا
لحجتها، تماما مثل "foreach". ومع ذلك، فإنه لا يزال يستخدم المعجم $_ إذا كان هناك
المعجمي $_ في النطاق (مرة أخرى، تمامًا مثل "foreach") [Perl #114020].

تشير com.smartmatch للعائلات of ملامح . الآن تجريبي
لقد كانت المطابقة الذكية، التي تمت إضافتها في الإصدار 5.10.0 وتمت مراجعتها بشكل كبير في الإصدار 5.10.1، بمثابة لعبة منتظمة
نقطة الشكوى. على الرغم من وجود عدد من الطرق التي تكون مفيدة فيها، إلا أنها كانت مفيدة
ثبت أيضًا أنه يمثل مشكلة ومربكًا لكل من مستخدمي ومنفذي لغة Perl. هنالك
تم تقديم عدد من المقترحات حول أفضل السبل لمعالجة المشكلة. فمن الواضح أن
من المؤكد تقريبًا أن Smartmatch إما أن يتغير أو يختفي في المستقبل. الاعتماد
على سلوكه الحالي لا ينصح.

سيتم الآن إصدار التحذيرات عندما يرى المحلل اللغوي "~~" أو "معطى" أو "متى". تعطيل
هذه التحذيرات، يمكنك إضافة هذا السطر إلى النطاق المناسب:

no if $] >= 5.018,angers => "experimental::smartmatch";

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

معجمي $_ is الآن تجريبي
منذ أن تم تقديمه في Perl v5.10، فقد تسبب في الكثير من الالتباس دون أي وضوح
حل:

· وحدات مختلفة (على سبيل المثال، List::Util) تتوقع أن تستخدم إجراءات رد الاتصال العمومي $_.
"use List::Util 'first'; my $_; first { $_ == 1 } @list" لا يعمل كما يفعل المرء
توقع.

· يمكن أن يتسبب إعلان "my $_" سابقًا في نفس الملف في حدوث تحذيرات إغلاق مربكة.

· يسمح حرف النموذج الأولي للروتين الفرعي "_" بالوصول إلى الروتين الفرعي الخاص بك
المعجمي $_، لذا فهو ليس خاصًا حقًا على كل حال.

· ومع ذلك، لا يمكن للإجراءات الفرعية ذات النموذج الأولي والأساليب "(@)" الوصول إلى
المعجمي للمتصل $_، ما لم يتم كتابته باللغة XS.

· ولكن حتى إجراءات XS لا يمكنها الوصول إلى المعجم $_ المعلن، وليس في الاتصال
روتين فرعي، ولكن في نطاق خارجي، إذا حدث هذا الروتين الفرعي ناهيك عن $_ أو
استخدم أي عوامل تشغيل افتراضية إلى $_.

نأمل أن يتم إعادة تأهيل المعجم $_، ولكن هذا قد يسبب تغييرات فيه
سلوك. يرجى استخدامه بحذر حتى يصبح مستقرًا.

قراءة سطر () مع "$/ = \ن" الآن يقرأ N الشخصيات، ليس N بايت
في السابق، عند القراءة من دفق يحتوي على طبقات الإدخال/الإخراج مثل "التشفير"، فإن قراءة سطر ()
ستقرأ الدالة، والمعروفة أيضًا باسم عامل التشغيل "<>". N بايت من الأعلى
طبقة. [بيرل #79960]

الآن، N تتم قراءة الأحرف بدلا من ذلك.

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

تم تجاوزه "الكرة الأرضية" is الآن مرت صورة واحدة؟ حجة
تم استخدام تجاوزات "glob" لتمرير وسيطة ثانية سحرية غير موثقة تم تحديدها
المتصل. لم يكن هناك أي شيء في CPAN يستخدم هذا، وقد كان ذلك عائقًا في طريق إصلاح الأخطاء، لذلك كان كذلك
إزالة. إذا كنت تريد حقًا التعرف على المتصل، فراجع Devel::Callsite على CPAN.

هنا الوثيقة تحليل
يبدأ نص المستند هنا داخل عامل التشغيل الذي يشبه علامة الاقتباس دائمًا على السطر
بعد "<
عامل التشغيل المحتوي على علامة الاقتباس، ولكن كان هذا هو الحال في بعض الأحيان فقط [Perl #114040].

أبجدية مشغلي يجب الآن be منفصل تبدأ من هيه إغلاق محدد of منتظم التعبيرات
لم يعد بإمكانك كتابة شيء مثل:

م/أ/و 1

بدلا من ذلك يجب عليك الكتابة

م/أ/ و 1

مع وجود مسافة بيضاء تفصل بين عامل التشغيل ومحدد الإغلاق العادي
تعبير. أدى عدم وجود مسافة بيضاء إلى تحذير الإهمال منذ لغة Perl
v5.14.0.

س(...) يمكن لا يعد be مستعمل as بين قوسين
تُستخدم قوائم "qw" لخداع المحلل اللغوي وجعله يعتقد أنهم محاطون دائمًا
بين قوسين. سمح هذا ببعض الإنشاءات المدهشة مثل "foreach $x qw(abc)
{...}"، والتي ينبغي كتابتها حقًا "foreach $x (qw(abc)) {...}".
في بعض الأحيان يتم وضع المعجم في حالة خاطئة، بحيث لا يعمل بشكل كامل، وما شابه ذلك
"foreach qw(abc) {...}" الذي قد يتوقع المرء أن يسمح به لا يعمل على الإطلاق.

لقد تم الآن إلغاء هذا التأثير الجانبي لـ "qw". لقد تم إهماله منذ بيرل
v5.13.11. من الضروري الآن استخدام الأقواس الحقيقية في كل مكان تستدعيه القواعد
بالنسبة لهم.

تفاعل of معجمي الافتراضي تحذيرات
تشغيل أي تحذيرات معجمية تستخدم أولاً لتعطيل كافة التحذيرات الافتراضية إذا كانت معجمية
لم يتم تمكين التحذيرات بالفعل:

$*; #تحذير من الإهمال
استخدام التحذيرات "باطلة"؛
$#; # تحذير باطل؛ لا يوجد تحذير الإهمال

الآن، أصبحت فئات التحذيرات "تصحيح الأخطاء" و"المهملة" و"glob" و"inplace" و"malloc"
يتم تركها قيد التشغيل عند تشغيل التحذيرات المعجمية (ما لم يتم إيقاف تشغيلها بواسطة "لا توجد تحذيرات"، أو
دورة).

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

هذه هي الفئات الوحيدة التي تتكون فقط من التحذيرات الافتراضية. التحذيرات الافتراضية في
لا تزال الفئات الأخرى معطلة عن طريق "استخدام تحذيرات "الفئة""، كما لم نفعل ذلك بعد
البنية التحتية للتحكم في التحذيرات الفردية.

"ولاية الفرعية" "ملكنا الفرعية"
بسبب حادثة تاريخية، "الدولة الفرعية" و"الفرعية الخاصة بنا" كانت مكافئة لـ "الفرعية" البسيطة،
لذلك يمكن للمرء إنشاء فرعي مجهول باستخدام "الفرعي { ... }". هذه هي الآن
غير مسموح به خارج ميزة "lexical_subs". ضمن ميزة "lexical_subs" هم
لها معاني جديدة موصوفة في "الروتينات الفرعية المعجمية" في perlsub.

تعريف القيم تخزين in بيئة . قسري إلى بايت سلاسل
دائمًا ما يتم تقييد القيمة المخزنة في متغير البيئة عند توريثها
عمليات الطفل.

في هذا الإصدار، عند التعيين إلى %ENV، يتم تبسيط القيم وتحويلها على الفور
أن تكون مجرد سلسلة بايت.

أولاً، يجب أن تكون سلسلة فقط. ثم إذا كانت السلسلة utf8 وما يعادلها
من عمل "utf8::downgrade()"، يتم استخدام هذه النتيجة؛ خلاف ذلك، ما يعادل
يتم استخدام "utf8::encode()"، ويتم إصدار تحذير بشأن الأحرف العريضة ("التشخيص").

"يتطلب" هذا For غير قابل للقراءة ملفات
عندما يواجه "require" ملفًا غير قابل للقراءة، فإنه يموت الآن. كان يستخدم لتجاهل الملف و
استمر في البحث في الدلائل فيINC [Perl #113422].

"gv_fetchmeth_*" سوبر
وظائف XS المتنوعة "gv_fetchmeth_*" المستخدمة للتعامل مع الحزمة التي ينتهي اسمها بـ
"::SUPER" خصيصا. سيتم التعامل مع البحث عن الطريقة في الحزمة "Foo::SUPER" على أنه ملف
البحث عن طريقة "SUPER" في الحزمة "Foo". لم يعد هذا هو الحال. للقيام بـ "سوبر"
البحث، وقم بتمرير مخبأ "Foo" وعلامة "GV_SUPER".

"الانقسام". أول حجة is الأكثر من ذلك باتساق تفسير
بعد بعض التغييرات السابقة في الإصدار 5.17، تم تبسيط سلوك "التقسيم": إذا كان
يتم تقييم وسيطة PATTERN إلى سلسلة تحتوي على مسافة واحدة، ويتم التعامل معها بالطريقة التي يتم بها التعامل مع a
حرفي كانت السلسلة التي تحتوي على مسافة واحدة ذات مرة.

الإستنكار


وحدة إزالة
ستتم إزالة الوحدات التالية من التوزيع الأساسي في إصدار مستقبلي، و
سوف تحتاج في ذلك الوقت إلى التثبيت من CPAN. التوزيعات على CPAN التي تتطلب
ستحتاج هذه الوحدات إلى إدراجها كمتطلبات أساسية.

ستقوم الإصدارات الأساسية من هذه الوحدات الآن بإصدار تحذيرات من فئة "مهملة" للتنبيه
لك هذه الحقيقة. لإسكات تحذيرات الإهمال هذه، قم بتثبيت الوحدات المعنية
من CPAN.

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

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

لاستخدام أحرف غير ASCII في النص المصدر، يرجى الرجوع إلى utf8. ل
للتعامل مع بيانات الإدخال/الإخراج النصية، يرجى الرجوع إلى التشفير والفتح.

الأرشيف::استخراج
ب::لينت
ب::لينت::تصحيح
CPANPLUS وجميع وحدات "CPANPLUS::*" المضمنة
ديفيل::InnerPackage
سجل::رسالة
سجل::الرسالة::التكوين
السجل::الرسالة::المعالجون
السجل::الرسالة::العنصر
سجل::الرسالة::بسيطة
الوحدة::قابل للتوصيل
الوحدة النمطية::قابل للتوصيل::كائن
الكائن::الوصول
بود :: LaTeX
المصطلح::واجهة المستخدم
المصطلح::واجهة المستخدم::التاريخ

المرافق
ستتم إزالة الأدوات المساعدة التالية من التوزيع الأساسي في إصدار مستقبلي مثل
تم إهمال الوحدات المرتبطة بها. سيظلون متاحين مع
توزيع CPAN المطبق.

com.cpanp
"cpanp-تشغيل بيرل"
cpan2dist
هذه العناصر جزء من توزيع "CPANPLUS".

pod2latex
هذا العنصر جزء من توزيع "Pod::LaTeX".

PL_sv_objcount
يُستخدم هذا المتغير الشامل للمترجم لتتبع العدد الإجمالي لكائنات Perl في ملف
مترجم. لم تعد تتم صيانته وستتم إزالته تمامًا في الإصدار 5.20 من Perl.

خمسة إضافي الأحرف ينبغي be هرب in أنماط مع "/س"
عندما يتم تجميع نمط التعبير العادي باستخدام "/x"، يتعامل Perl مع 6 أحرف على أنها بيضاء
المساحة المطلوب تجاهلها، مثل SPACE وTAB. ومع ذلك، توصي Unicode بأن يكون عدد الأحرف 11 حرفًا
تعامل على هذا النحو. سوف نتوافق مع هذا في إصدار بيرل المستقبلي. وفي هذه الأثناء استخدم
سيؤدي أي من الأحرف المفقودة إلى ظهور تحذير إهمال، ما لم يتم إيقاف تشغيله. ال
خمسة أحرف هي:

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

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

مختلف XS قابلة للاستدعاء وظائف . الآن إهمال
ستتم إزالة جميع الوظائف المستخدمة لتصنيف الشخصيات من الإصدار المستقبلي من
بيرل، ولا ينبغي أن تستخدم. مع مترجمي لغة C المشاركين (على سبيل المثال، دول مجلس التعاون الخليجي)، يمكنك تجميع أي منها
الملف الذي يستخدم أيًا من هذه الملفات سيولد تحذيرًا. لم تكن هذه مخصصة للجمهور
يستخدم؛ هناك وحدات ماكرو مكافئة وأسرع لمعظمها.

راجع "فئات الأحرف" في perlapi. القائمة الكاملة هي:

"is_uni_alnum"، "is_uni_alnumc"، "is_uni_alnumc_lc"، "is_uni_alnum_lc"، "is_uni_alpha"،
"is_uni_alpha_lc"، "is_uni_ascii"، "is_uni_ascii_lc"، "is_uni_blank"، "is_uni_blank_lc"،
"is_uni_cntrl"، "is_uni_cntrl_lc"، "is_uni_digit"، "is_uni_digit_lc"، "is_uni_graph"،
"is_uni_graph_lc"، "is_uni_idfirst"، "is_uni_idfirst_lc"، "is_uni_lower"،
"is_uni_lower_lc"، "is_uni_print"، "is_uni_print_lc"، "is_uni_punct"، "is_uni_punct_lc"،
"is_uni_space"، "is_uni_space_lc"، "is_uni_upper"، "is_uni_upper_lc"، "is_uni_xdigit"،
"is_uni_xdigit_lc"، "is_utf8_alnum"، "is_utf8_alnumc"، "is_utf8_alpha"، "is_utf8_ascii"،
"is_utf8_blank"، "is_utf8_char"، "is_utf8_cntrl"، "is_utf8_digit"، "is_utf8_graph"،
"is_utf8_idcont"، "is_utf8_idfirst"، "is_utf8_lower"، "is_utf8_mark"،
"is_utf8_perl_space"، "is_utf8_perl_word"، "is_utf8_posix_digit"، "is_utf8_print"،
"is_utf8_punct"، "is_utf8_space"، "is_utf8_upper"، "is_utf8_xdigit"، "is_utf8_xidcont"،
"is_utf8_xidfirst".

بالإضافة إلى ذلك، تم إهمال هذه الوظائف الثلاث التي لم تعمل بشكل صحيح مطلقًا:
"to_uni_lower_lc"، و"to_uni_title_lc"، و"to_uni_upper_lc".

مؤكد نادر يستخدم of الخطوط المائلة العكسية في غضون التعابير المنطقية . الآن إهمال
هناك ثلاثة أزواج من الأحرف التي يتعرف عليها Perl كأحرف أولية عادية
أنماط التعبير: "{}"، و"[]"، و"()". ويمكن استخدامها أيضًا لتحديد الأنماط،
مثل:

م {فو}
الصورة (فو) (شريط)

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

م {فو \ {1,3،XNUMX \}}

لا تغير الخطوط المائلة العكسية السلوك، وهذا يطابق "fo" متبوعًا بواحد إلى
ثلاثة تكرارات أخرى لـ "o".

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

شق هيه رموز "(؟" "(*" in منتظم التعبيرات
يتم الآن رفع تحذير الإهمال إذا تم فصل "(" و "؟" بمسافة بيضاء أو
التعليقات في بنيات التعبير العادي "(؟...)". وبالمثل، إذا كانت "(" و"*" موجودة
مفصولة في بنيات "(*فعل...)".

ما قبل بيرليو IO تطبيقات
من الناحية النظرية، يمكنك حاليًا إنشاء لغة Perl بدون PerliO. بدلا من ذلك، يمكنك استخدام المجمع
حول stdio أو sfio. من الناحية العملية، هذا ليس مفيدًا جدًا. لم يتم اختباره جيدًا، و
بدون أي دعم لطبقات الإدخال والإخراج (IO) أو (وبالتالي) Unicode، فهي ليست لغة بيرل كثيرًا. مبنى
بدون PerlIO، من المرجح أن تتم إزالته في الإصدار التالي من Perl.

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

Future الإستنكار


· منصات بدون دعم البنية التحتية

لقد كان كل من نظامي التشغيل Windows CE وz/OS يعانيان من نقص الصيانة تاريخيًا، ولا يزالان كذلك حاليًا
لم يتم البناء بنجاح ولا يتم اختبار الدخان بانتظام. الجهود جارية
لتغيير هذا الوضع، ولكن لا ينبغي اعتبار أن المنصات
آمنة ومدعومة. إذا لم تصبح قابلة للبناء ويتم تدخينها بانتظام، قم بدعمها
بالنسبة لهم قد تتم إزالتها بشكل نشط في الإصدارات المستقبلية. إذا كان لديك مصلحة في هذه
المنصات ويمكنك تقديم وقتك أو خبرتك أو أجهزتك للمساعدة في دعمها
المنصات، يرجى إبلاغ جهود تطوير بيرل عن طريق البريد الإلكتروني
"[البريد الإلكتروني محمي]".

بعض المنصات التي تبدو ميتة تمامًا موجودة أيضًا في القائمة المختصرة لـ
الإزالة من الآن إلى الإصدار 5.20.0:

المديرية العامة/تجربة المستخدم
نيكست

نعتقد أيضًا أنه من المحتمل أن الإصدارات الحالية من Perl لن تقوم بعد الآن ببناء AmigaOS،
DJGPP وNetWare (محليًا) وOS/2 وPlan 9. إذا كنت تستخدم Perl على مثل هذا النظام الأساسي
ولديك مصلحة في ضمان مستقبل بيرل عليها، يرجى الاتصال بنا.

نحن نعتقد أن لغة Perl لم تكن قادرة منذ فترة طويلة على البناء على بنيات نهاية مختلطة (مثل
مثل PDP-11s)، وتعتزم إزالة أي رمز دعم متبقي. وبالمثل، رمز
ستتم إزالة دعم GNU dld الذي تم الحفاظ عليه لفترة طويلة قريبًا إذا لم يفعل أحد ذلك
أنفسهم المعروفين كمستخدم نشط.

· مبادلة $< و$>

لقد دعم بيرل لغة المبادلة $< و $> (وبالمثل $( و $)) إلى
قم بإسقاط الأذونات مؤقتًا منذ الإصدار 5.0، مثل هذا:

($<, $>) = ($>, $<);

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

كبديل، يوصى بالتخصيص إلى $> فقط:

محلي $> = $<;

أنظر أيضا: إزالة الغموض عن Setuidhttp://www.cs.berkeley.edu/~daw/papers/setuid-
usenix02.pdf>.

· ستتم إزالة كلمة "microperl"، التي كانت معطلة منذ فترة طويلة والغرض الحالي غير واضح.

· تجديد دلالات "\Q" في سلاسل مزدوجة الاقتباس عند دمجها مع عمليات الهروب الأخرى.

هناك العديد من الأخطاء والتناقضات التي تتضمن مجموعات من "\Q" وحالات الهروب
مثل "\x"، "\L"، وما إلى ذلك، ضمن زوج "\Q...\E". هذه تحتاج إلى إصلاح، والقيام بذلك
سوف يغير بالضرورة السلوك الحالي. ولم تتم تسوية التغييرات بعد.

· استخدام $x، حيث يشير "x" إلى أي حرف تحكم C0 فعلي (غير مطبوع).
غير مسموح به في إصدار بيرل المستقبلي. استخدم "${x}" بدلاً من ذلك (حيث يشير "x" مرة أخرى إلى a
حرف التحكم)، أو أفضل، $^A ، حيث "^" عبارة عن علامة إقحام (CIRCUMFLEX ACCENT)، و"A"
يرمز إلى أي من الشخصيات المدرجة في نهاية "اختلافات المشغل" في
com.perlebcdic.

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


· تم الآن تحسين قوائم إعلانات المتغيرات المعجمية ("my($x, $y)") وصولاً إلى أ
عملية واحدة وبالتالي فهي أسرع من ذي قبل.

· تم إضافة معالج أولي جديد للغة C "NO_TAINT_SUPPORT" والذي، إذا تم ضبطه، فإنه يعطل لغة Perl
دعم العيب تماما. سيؤدي استخدام إشارات سطر الأوامر -T أو -t إلى حدوث حالة قاتلة
خطأ. احذر من أن كلا من الاختبارات الأساسية بالإضافة إلى العديد من اختبارات توزيع CPAN ستفعل ذلك
تفشل مع هذا التغيير. على الجانب العلوي، فإنه يوفر فائدة أداء صغيرة بسبب
انخفاض المتفرعة.

Do ليس تمكين ما لم لصحتك! علم بالضبط ماذا لصحتك! . الحصول على نفسك إلى.

· "الحزمة" ذات الوسيطات الثابتة أصبحت الآن مطوية بشكل ثابت في معظم الحالات [Perl #113470].

· الإسراع في مطابقة التعبير العادي مع خصائص Unicode. المكسب الأكبر
مخصص لـ "\X"، وهو "مجموعة حروف ممتدة" من Unicode. الربح لها حوالي 35٪ -
40%. فئات الأحرف بين قوسين، على سبيل المثال، "[0-9\x{100}]" تحتوي على نقاط رمز أعلاه
255 أصبحت الآن أسرع أيضًا.

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

· تم توسيع نطاق تحسين التجزئات في السياق المنطقي ليشمل التأثير
"scalar(%hash)" و"%hash ? ... : ..." و"sub { %hash || ... }".

· يقوم مشغلو Filetest بإدارة المكدس بطريقة أكثر كفاءة جزئيًا.

· الكرات المستخدمة في سياق رقمي أصبحت الآن مُرقمة بشكل مباشر في معظم الحالات، بدلاً من ذلك
يجري تعدادها عن طريق التقييد.

· يتم الآن طي عامل التكرار "x" إلى ثابت واحد في وقت الترجمة if
يتم استدعاؤها في سياق عددي مع معاملات ثابتة ولا توجد أقواس حول اليسار
المعامل.

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


جديد الأقسام براغماتا
· التكوين::Perl::V الإصدار 0.16 تمت إضافته كوحدة نمطية مزدوجة العمر. أنه يوفر
استرجاع البيانات المنظمة لمخرجات "Perl -V" بما في ذلك المعلومات المعروفة فقط لـ
ثنائي "Perl" وغير متوفر عبر Config.

تحديث الأقسام براغماتا
للحصول على قائمة كاملة بالتحديثات، قم بتشغيل:

القائمة الأساسية $ --diff 5.16.0 5.18.0

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

· الأرشيف :: المستخرج تمت ترقيته إلى 0.68.

تعامل مع حالة الحافة على نظام Linux باستخدام برنامج Busybox لفك الضغط.

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

يدعم ptar الآن خيار -T بالإضافة إلى الخيارات غير المتقطعة [rt.cpan.org #75473]،
[rt.cpan.org #75475].

تم وضع علامة UTF-8 على أسماء الملفات ذات التشفير التلقائي [rt.cpan.org #75474].

لا تستخدم "tell" في مقابض IO::Zlib [rt.cpan.org #64339].

لا تحاول "تشون" على الروابط الرمزية.

· تمت ترقية autodie إلى 2.13.

"autodie" يلعب الآن بشكل جيد مع البراغما "المفتوحة".

· تمت ترقية B إلى 1.42.

تمت إضافة طريقة "stashoff" الخاصة بـ COP. وهذا يوفر الوصول إلى الداخلية
تمت إضافة الحقل في Perl 5.16 ضمن الإصدارات المترابطة [Perl #113034].

"B::COP::stashpv" يدعم الآن أسماء حزم UTF-8 وNULs المضمنة.

يتم الآن توفير جميع "CVf_*" و"GVf_*" والمزيد من قيم العلامات المتعلقة بـ SV كثوابت
في مساحة الاسم "B::" ومتاح للتصدير. قائمة التصدير الافتراضية لم تفعل ذلك
تغيرت.

وهذا يجعل الوحدة تعمل مع واجهة برمجة تطبيقات الوسادة الجديدة.

· ب :: موجز تمت ترقيته إلى 0.95.

تم إصلاح خيار "-nobanner"، ويمكن الآن التخلص من "التنسيق". عندما مرت أ
الاسم الفرعي المراد تفريغه، فإنه سيتحقق أيضًا لمعرفة ما إذا كان اسم التنسيق. اذا كان
sub والتنسيق يشتركان في نفس الاسم، وسيقومان بتفريغ كليهما.

يؤدي هذا إلى إضافة دعم لعلامتي "OpMAYBE_TRUEBOOL" و"OPpTRUEBOOL" الجديدتين.

· ب::تم ترقية التصحيح إلى 1.18.

يؤدي هذا إلى إضافة دعم (تجريبيًا) لـ "B::PADLIST"، الذي تمت إضافته في Perl 5.17.4.

· ب::تم ترقية Deparse إلى 1.20.

تجنب التحذير عند التشغيل ضمن "Perl -w".

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

يمنع هذا الإصدار الفواصل المنقوطة الزائدة في التنسيقات.

يضيف هذا الإصدار عملية إزالة كعب الروتين للروتينات الفرعية المعجمية.

لم يعد يموت عند فصل "الفرز" بدون وسيطات. الآن يحذف بشكل صحيح
فاصلة لـ "system $prog @args" و"exec $prog @args".

· تمت ترقية Bignum وBigint وBigrat إلى 0.33.

تمت إعادة كتابة تجاوزات "hex" و"oct"، مما أدى إلى إزالة العديد من المشكلات،
وإجراء تغيير واحد غير متوافق:

· في السابق، أيًا كان من "استخدام bigint" أو "استخدام bigrat" الذي تم تجميعه لاحقًا سيستغرق الأمر
الأسبقية على الآخر، مما يتسبب في عدم احترام "Hex" و"oct" للبراغما الأخرى
عندما تكون في النطاق.

· استخدام أي من هذه البراغماتا الثلاثة من شأنه أن يسبب "ست عشري" و"أوكت" في أي مكان آخر في
برنامج لتقييم الحجج الخاصة بهم في سياق القائمة ومنعهم من ذلك
استنتاج $_ عند الاتصال بدون وسيطات.

· استخدام أي من هذه البراغماتا الثلاثة سيؤدي إلى إرجاع "oct("1234")" إلى 1234 (لأي
الرقم الذي لا يبدأ بـ 0) في أي مكان في البرنامج. الآن تتم ترجمة "1234".
من النظام الثماني إلى النظام العشري، سواء كان ذلك ضمن نطاق البراغما أم لا.

· التجاوزات العالمية التي تسهل الاستخدام المعجمي لـ "hex" و"oct" تحترم الآن
أي تجاوزات موجودة كانت موجودة قبل تثبيت التجاوزات الجديدة،
الرجوع إليهم خارج نطاق "استخدام Bignum".

· "استخدم bignum "hex""، و"استخدم bignum "oct"" ودعوات مماثلة لـ bigint و
يقوم bigrat الآن بتصدير دالة "hex" أو "oct"، بدلاً من توفير وظيفة global
تجاوز.

· تمت ترقية الكارب إلى 1.29.

لم يعد الكارب مرتبكًا عندما يقوم "المتصل" بإرجاع undef لحزمة كانت موجودة
حذفه.

تم الآن توثيق الدالتين "longmess()" و"shortmess()".

· تمت ترقية CGI إلى 3.63.

تتم الآن معالجة تسلسلات هروب HTML غير المعروفة بشكل أفضل، مما يؤدي إلى حدوث مشكلات
لم يعد يتم إدراج الأسطر الجديدة بعد ذلك العلامات حسب "startform()" أو "start_form()"،
والتحذيرات الزائفة "التبعية غير الآمنة" التي تظهر مع بعض إصدارات Perl موجودة الآن
عملت حولها.

· الفئة :: تمت ترقية الهيكل إلى 0.64.

يحترم المُنشئ الآن طرق الوصول التي تم تجاوزها [Perl #29230].

· الضغط::Raw::Bzip2 تمت ترقيته إلى 2.060.

تم إصلاح سوء استخدام واجهة برمجة التطبيقات "السحرية" الخاصة بـ Perl.

· الضغط::Raw::تم ترقية Zlib إلى 2.060.

ترقية zlib المجمعة إلى الإصدار 1.2.7.

إصلاح فشل البناء على Irix، وSolaris، وWin32، وأيضًا عند الإنشاء كـ C++
[rt.cpan.org #69985]، [rt.cpan.org #77030]، [rt.cpan.org #75222].

تم إصلاح سوء استخدام واجهة برمجة التطبيقات "السحرية" الخاصة بـ Perl.

تم تسريع "compress()" و"uncompress()" و"memGzip()" و"memGunzip()" بواسطة
جعل التحقق من صحة المعلمة أكثر كفاءة.

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

قم بمعاملة متطلبات undef إلى "from_string_hash" على أنها 0 (مع تحذير).

تمت إضافة طريقة "requirements_for_module".

· تمت ترقية CPANPLUS إلى 0.9135.

السماح بالاضافة blib/script إلى المسار.

احفظ التاريخ بين استدعاءات الصدفة.

تعامل بشكل أفضل مع وسيطات "makemakerargs" و"makeflags".

يؤدي هذا إلى حل المشكلات المتعلقة بمحرك مصدر SQLite.

· البيانات :: تمت ترقية شاحنة قلابة إلى 2.145.

لقد تم تحسينه لبناء تجزئة مرئية فقط عند الضرورة، وبالتالي السرعة
يصل التسلسل بشكل كبير.

تمت إضافة اختبارات إضافية من أجل تحسين البيان والفرع والحالة و
تغطية روتينية. على أساس تحليل التغطية، بعض الأجزاء الداخلية من
تمت إعادة بناء Dumper.pm. تم الآن توثيق جميع الأساليب تقريبًا.

· تمت ترقية DB_File إلى 1.827.

لم تعد وحدة Perl الرئيسية تستخدم البنية "@_".

· Devel::Peek تمت ترقيته إلى 1.11.

يؤدي هذا إلى إصلاح التجميع باستخدام برامج التحويل البرمجي C++ ويجعل الوحدة تعمل مع اللوحة الجديدة
API.

· الملخص :: تمت ترقية MD5 إلى 2.52.

أصلح "Digest::Perl::MD5" OO الاحتياطي [rt.cpan.org #66634].

· الملخص::تم ترقية SHA إلى 5.84.

يؤدي هذا إلى إصلاح الخلل المزدوج، والذي ربما تسبب في حدوث ثغرات أمنية في بعض الحالات.

· تمت ترقية DynaLoader إلى 1.18.

ويرجع ذلك إلى تغيير بسيط في التعليمات البرمجية في XS لتنفيذ VMS.

يؤدي هذا إلى إصلاح التحذيرات المتعلقة باستخدام أقسام "CODE" بدون قسم "OUTPUT".

· تمت ترقية الترميز إلى 2.49.

تمت إضافة الاسم المستعار لنظام التشغيل Mac x-mac-ce، وتم إصلاح العديد من الأخطاء فيه
التشفير::Unicode، والتشفير::UTF7 والتشفير::GSM0338.

· تمت ترقية Env إلى 1.04.

لم يعد تطبيق SPLICE الخاص به يسيء التصرف في سياق القائمة.

· ExtUtils::CBuilder تمت ترقيته إلى 0.280210.

تم الآن تضمين ملفات البيان بشكل صحيح لتلك الإصدارات من VC++ التي تستخدم
هم. [بيرل #111782، #111798].

يمكن الآن تمرير قائمة الرموز المراد تصديرها إلى "link()" في نظام التشغيل Windows، كما هو الحال في أنظمة أخرى
أنظمة تشغيل [بيرل #115100].

· ExtUtils::ParseXS تمت ترقيته إلى 3.18.

يتجنب كود C الذي تم إنشاؤه الآن زيادة تشغيل "PL_amagic_generation" بشكل غير ضروري
إصدارات Perl حيث يتم ذلك تلقائيًا (أو في Perl الحالي حيث لا يوجد المتغير
يعد موجودا).

يؤدي هذا إلى تجنب التحذير الزائف للمعلمات غير XSUB التي تمت تهيئتها [Perl #112776].

· الملف :: النسخة تمت ترقيتها إلى 2.26.

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

· الملف :: DosGlob تمت ترقيته إلى 1.10.

يتم الآن تحرير ذاكرة التخزين المؤقت الداخلية لأسماء الملفات التي يحتفظ بها لكل متصل عند ذلك
تم تحرير المتصل. وهذا يعني أن "استخدام File::DosGlob 'glob'; eval 'scalar <*>'" لم يعد
تسرب الذاكرة.

· الملف :: الجلب تمت ترقيته إلى 0.38.

تمت إضافة خيار "file_default" لعناوين URL التي لا تحتوي على مكون ملف.

استخدم "File::HomeDir" عندما يكون متاحًا، وقم بتوفير "PERL5_CPANPLUS_HOME" لتجاوز
الكشف التلقائي.

أعد الجلب دائمًا المجاميع الاختبارية إذا تم تعيين "fetchdir".

· الملف::Find تمت ترقيته إلى 1.23.

يعمل هذا على إصلاح معالجة المسار غير المتناسق على VMS.

قد تظهر الملفات الفردية الآن في قائمة الدلائل المطلوب البحث فيها [Perl #59750].

· الملف::Glob تمت ترقيته إلى 1.20.

File::Glob لديه نفس الإصلاح تمامًا مثل File::DosGlob. لأنه ما يملكه بيرل
يستخدم عامل التشغيل "glob" نفسه (باستثناء نظام VMS)، وهذا يعني أن "eval 'scalar <*>'" لم يعد
التسريبات.

تقوم قائمة الأنماط المفصولة بمسافات بإرجاع قوائم طويلة من النتائج التي لم تعد تؤدي إلى نتائج
تلف الذاكرة أو تعطلها. تم تقديم هذا الخطأ في Perl 5.16.0. [بيرل #114984]

· الملف::Spec::Unix تمت ترقيته إلى 3.40.

قد يؤدي "abs2rel" إلى نتائج غير صحيحة عند إعطاء مسارين نسبيين أو الجذر
الدليل مرتين [بيرل #111510].

· الملف::stat تمت ترقيته إلى 1.07.

"File::stat" يتجاهل عملية اختبار الملف، ويحذر عند استخدامه معًا
معها. لكنه لم يكن تحذيرًا لـ "-r". لقد تم إصلاح هذا [بيرل #111640].

"-p" يعمل الآن، ولا يُرجع خطأً للأنابيب [Perl #111638].

في السابق، لم تكن عوامل التشغيل "-x" و"-X" المحملة بشكل زائد لـ "File::stat" تعطي القيمة الصحيحة
نتائج للأدلة أو الملفات القابلة للتنفيذ عند التشغيل كجذر. كانوا
التعامل مع الأذونات القابلة للتنفيذ للجذر تمامًا مثل أي مستخدم آخر
اختبارات عضوية المجموعة إلخ للملفات التي لا يملكها الجذر. وهم الآن يتبعون الصحيح
سلوك Unix - بالنسبة للدليل، فهي صحيحة دائمًا، وبالنسبة للملف إذا كان أيًا من
يتم تعيين ثلاث بتات لأذونات التنفيذ ثم يبلغون أن الجذر يمكنه تنفيذ الملف.
لقد كانت عوامل التشغيل "-x" و"-X" المضمنة في Perl صحيحة دائمًا.

· الملف::تم ترقية درجة الحرارة إلى 0.23

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

· تمت ترقية GDBM_File إلى 1.15.

تمت إزالة المعلمة الخامسة الاختيارية غير الموثقة لـ "TIEHASH". لقد كان هذا
يهدف إلى توفير التحكم في رد الاتصال الذي تستخدمه وظائف "gdbm*" في حالة حدوث خطأ فادح
أخطاء (مثل مشاكل نظام الملفات)، ولكنها لم تعمل (ولا يمكن أن تعمل أبدًا).
لم يحاول أي رمز على CPAN استخدامه. رد الاتصال الآن هو دائمًا السابق
الافتراضي، "تشاءم". مشاكل في بعض الأنظمة الأساسية تتعلق بكيفية عمل وظيفة "Croak".
تم حل المكالمة أيضًا.

· التجزئة :: Util تمت ترقيتها إلى 0.15.

يعود الآن "hash_unlocked" و"hashref_unlocked" إلى القيمة الصحيحة إذا كان التجزئة مقفلاً،
بدلاً من إرجاع خطأ دائمًا [Perl #112126].

"hash_unlocked" و"hashref_unlocked" و"lock_hash_recurse" و"unlock_hash_recurse" هي
أصبح الآن قابلاً للتصدير [Perl #112126].

تمت إضافة وظيفتين جديدتين، "hash_locked" و"hashref_locked". الغريب،
تم تصدير هاتين الوظيفتين بالفعل، على الرغم من عدم وجودهما [Perl
# 112126].

· HTTP::Tiny تمت ترقيته إلى 0.025.

أضف ميزات التحقق من طبقة المقابس الآمنة [github #6]، [github #9].

قم بتضمين عنوان URL النهائي في تجزئة الاستجابة.

أضف خيار "العنوان_المحلي".

يؤدي هذا إلى تحسين دعم SSL.

· تمت ترقية IO إلى 1.28.

يمكن الآن استدعاء "sync()" على مقابض الملفات للقراءة فقط [Perl #64772].

IO::Socket يحاول بشكل أكبر تخزين معلومات مأخذ التوصيل مؤقتًا أو جلبها.

· IPC :: Cmd تمت ترقيته إلى 0.80.

استخدم "POSIX::_exit" بدلاً من "exit" في "run_forked" [rt.cpan.org #76901].

· IPC::Open3 تمت ترقيته إلى 1.13.

لم تعد وظيفة "open3 ()" تستخدم "POSIX :: Close ()" لإغلاق واصفات الملفات منذ ذلك الحين
الذي يكسر عد المرجع لواصفات الملفات التي يقوم بها PerlIO في الحالات التي يكون فيها
تتم مشاركة واصفات الملف بواسطة تدفقات PerlIO، مما يؤدي إلى محاولات لإغلاق الملف
الواصفات مرة ثانية عندما يتم إغلاق أي من تدفقات PerlIO لاحقًا.

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

ويتضمن بعض الرموز الجديدة.

· تمت ترقية Memoize إلى 1.03.

أصلح خيار ذاكرة التخزين المؤقت "MERGE".

· الوحدة::تم ترقية البناء إلى 0.4003.

تم إصلاح الخلل حيث قد تحتوي الوحدات التي لا تحتوي على $VERSION على إصدار "0" مدرج فيها
"يوفر" البيانات الوصفية، والتي سيتم رفضها بواسطة PAUSE.

تم إصلاح الخلل في PodParser للسماح بالأرقام في أسماء الوحدات.

تم إصلاح الخلل حيث أدى إعطاء الوسائط مرتين إلى تحولها إلى مصفوفات، مما أدى إلى
تثبيت مسارات مثل مجموعة مصفوفة(0xdeadbeef)/lib/Foo.pm.

يسمح إصلاح الأخطاء الطفيفة باستخدام العلامات حول "الاسم" البادئ في "ملخص" POD
الخط، وتم إجراء بعض التحسينات على الوثائق.

· الوحدة::CoreList تمت ترقيتها إلى 2.90

يتم الآن تخزين معلومات الإصدار كدلتا، مما يقلل بشكل كبير من حجم الملف
CoreList.pm ملف.

يؤدي هذا إلى استعادة التوافق مع الإصدارات الأقدم من Perl وتنظيف القائمة الأساسية
بيانات لوحدات مختلفة.

· الوحدة::Load::Conditional تمت ترقيتها إلى 0.54.

إصلاح استخدام "يتطلب" على perls المثبتة على مسار بمسافات.

تتضمن التحسينات المختلفة الاستخدام الجديد لـ Module::Metadata.

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

لقد تم تسريع عملية إنشاء كائن Module::Metadata لملف وحدة نموذجية
بحوالي 40%، وتم منع بعض التحذيرات الزائفة حول $VERSIONs.

· الوحدة::تم ترقية التوصيل إلى 4.7.

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

· صافي :: تمت ترقية بينغ إلى 2.41.

يؤدي هذا إلى إصلاح بعض حالات فشل الاختبار على نظام التشغيل Windows.

· تمت ترقية كود التشغيل إلى 1.25.

تعكس إزالة رمز تشغيل boolkeys وإضافة clonecv، introcv
وأكواد التشغيل Padcv.

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

يحذر الآن "عدم التحميل الزائد" من الوسائط غير الصالحة، تمامًا مثل "استخدام التحميل الزائد".

· PerlIO :: الترميز تمت ترقيته إلى 0.16.

هذه هي الوحدة التي تنفذ طبقة الإدخال/الإخراج ":encoding(...)". ولم يعد يفسد
الذاكرة أو تتعطل عندما تقوم الواجهة الخلفية للتشفير بإعادة تخصيص المخزن المؤقت أو منحه
typeglob أو العددية مفتاح التجزئة المشترك.

· PerlIO::scalar تمت ترقيته إلى 0.16.

قد يحتوي المخزن المؤقت القياسي المتوفر الآن على نقاط رمز 0xFF أو أقل فقط. [بيرل
# 109828]

· بيرل::OSType تمت ترقيته إلى 1.003.

يؤدي هذا إلى إصلاح خطأ اكتشاف نظام التشغيل VOS.

· جراب :: تمت ترقية HTML إلى 1.18.

تمت إعادة الخيار "--libpods". لقد تم إهماله، واستخدامه لا يفعل شيئا
بخلاف إصدار تحذير بأنه لم يعد مدعومًا.

نظرًا لأن ملفات HTML التي تم إنشاؤها بواسطة pod2html تدعي أنها تحتوي على مجموعة أحرف UTF-8، في الواقع
اكتب الملفات باستخدام UTF-8 [Perl #111446].

· Pod::Simple تمت ترقيته إلى 3.28.

تم إجراء العديد من التحسينات، معظمها على Pod::Simple::XHTML، والذي يحتوي أيضًا على ملف
تغيير التوافق: تم الآن تعطيل خيار "codes_in_verbatim" افتراضيًا. يرى
cpan/Pod-Simple/ChangeLog للحصول على التفاصيل الكاملة.

· تمت ترقية إعادة إلى 0.23

تم الآن تحسين الأحرف الفردية [class] مثل "/[s]/" أو "/[s]/i" كما لو كانت كذلك
لا تحتوي على أقواس، مثل "/s/" أو "/s/i".

راجع ملاحظة حول "op_comp" في قسم "التغييرات الداخلية" أدناه.

· تمت ترقية الخزنة إلى 2.35.

إصلاح التفاعلات مع "Devel::Cover".

لا تقم بتقييم الكود ضمن "غير صارم".

· العددية::Util تمت ترقيتها إلى الإصدار 1.27.

إصلاح مشكلة التحميل الزائد مع "sum".

"الأول" و"تقليل" الآن تحقق من رد الاتصال أولاً (لذا &أول(١) غير مسموح).

إصلاح "ملوث" على القيم السحرية [rt.cpan.org #55763].

أصلح "sum" على القيم السحرية السابقة [rt.cpan.org #61118].

إصلاح القراءة بعد نهاية المخزن المؤقت الثابت [rt.cpan.org #72700].

· البحث :: تمت ترقية Dict إلى 1.07.

لم تعد تتطلب "الإحصائيات" على معالجات الملفات.

استخدم "fc" لطي الحالة.

· تمت ترقية المقبس إلى 2.009.

الثوابت والوظائف المطلوبة لعضوية مجموعة مصدر البث المتعدد IP كانت
وأضاف.

يقوم "unpack_sockaddr_in()" و"unpack_sockaddr_in6()" الآن بإرجاع عنوان IP فقط في
سياق العددية، و"inet_ntop()" يحمي الآن من وجود كميات قياسية ذات طول غير صحيح
تجاوزها.

يؤدي هذا إلى إصلاح قراءة الذاكرة غير المهيأة.

· تمت ترقية النسخة القابلة للتخزين إلى 2.41.

لم يعد تعديل $_[0] ضمن "STORABLE_freeze" يؤدي إلى حدوث أعطال [Perl #112358].

يتم الآن إذابة الكائن الذي تطبق فئته "STORABLE_attach" مرة واحدة فقط عندما يكون هناك
توجد إشارات متعددة إليها في البنية التي يتم إذابتها [Perl #111918].

لم يتم دائمًا إذابة التجزئة المقيدة بشكل صحيح [Perl #73972].

يمكن تخزينه عند تجميد كائن REF المبارك باستخدام "STORABLE_freeze()"
الطريقة [بيرل #113880].

يمكنه الآن تجميد وذوبان الجليد بشكل صحيح. وهذا يسبب عدم توافق طفيف
تغيير في تنسيق التخزين، وبالتالي ارتفع إصدار التنسيق إلى 2.9.

يحتوي هذا على العديد من إصلاحات الأخطاء، بما في ذلك إصلاحات التوافق للإصدارات الأقدم من
التعامل مع بيرل وvstring.

· النظام::Syslog تمت ترقيته إلى 0.32.

يحتوي هذا على العديد من إصلاحات الأخطاء المتعلقة بـ "getservbyname()" و"setlogsock()" وlog
المستويات في "syslog()"، بالإضافة إلى إصلاحات لنظام التشغيل Windows، وHaiku-OS، وGNU/kFreeBSD. يرى
cpan/Sys-Syslog/Changes للحصول على التفاصيل الكاملة.

· المصطلح :: تمت ترقية ANSIColor إلى 4.02.

إضافة دعم للخط المائل.

تحسين معالجة الأخطاء.

· المصطلح :: تمت ترقية ReadLine إلى 1.10. يؤدي هذا إلى إصلاح استخدام com.cpan com.cpanp
shells على نظام التشغيل Windows في حالة احتواء محرك الأقراص الحالي على ملف \dev\tty
ملف.

· الاختبار :: تمت ترقية الحزام إلى 3.26.

إصلاح دلالات الكرة الأرضية على Win32 [rt.cpan.org #49732].

لا تستخدم "Win32::GetShortPathName" عند الاتصال بـ Perl [rt.cpan.org #47890].

تجاهل -T عند قراءة shebang [rt.cpan.org #64404].

تعامل مع الحالة التي لا نعرف فيها حالة انتظار الاختبار بأمان أكبر.

اجعل سطر ملخص الاختبار "موافق" قابلاً للتجاوز بحيث يمكن تغييره إلى مكون إضافي
جعل الناتج يثبت العجز.

لا تقم بتشغيل الملفات القابلة للكتابة على مستوى العالم.

· تمت ترقية النص::علامات التبويب والنص::Wrap إلى 2012.0818. دعم يونيكود
تمت إضافة الجمع بين الشخصيات إليهما.

· المواضيع :: المشتركة تمت ترقيتها إلى 1.31.

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

يضيف هذا دعمًا للقيم ذات القيمة المزدوجة كما تم إنشاؤها بواسطة Scalar::Util::dualvar.

· التعادل::StdHandle تمت ترقيته إلى 4.3.

"READ" يحترم الآن وسيطة الإزاحة لـ "قراءة" [Perl #112826].

· التوقيت::تم رفع المستوى المحلي إلى 1.2300.

قيم الثواني الأكبر من 59 ولكن أقل من 60 لم تعد تسبب "timegm()" و
"timelocal ()" للتشويش.

· Unicode::UCD تمت ترقيته إلى 0.53.

هذا يضيف وظيفة all_casefolds() الذي يقوم بإرجاع جميع طيات الحالة.

· تمت ترقية Win32 إلى 0.47.

تمت إضافة واجهات برمجة التطبيقات الجديدة للحصول على صفحة الرموز الحالية وتعيينها.

إزالة الأقسام براغماتا
· الإصدار :: تمت إزالة المتطلبات من التوزيع الأساسي. إنه متاح
تحت اسم مختلف: CPAN::Meta::Requirements.

توثيق


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

· تمت إعادة تنظيم بيرلشيت، وأضيفت بعض الأقسام الجديدة.

com.perldata

· الآن يوثق بشكل صريح سلوك قوائم مُهيئ التجزئة التي تحتوي على
مفاتيح مكررة.

perldiag

· تفسير الإشارات الرمزية الذي يمنعه "المراجع الصارمة" لم يعد كذلك الآن
افترض أن القارئ يعرف ما هي المراجع الرمزية.

com.perlfaq

· تمت مزامنة perlfaq مع الإصدار 5.0150040 من CPAN.

com.perlfunc

· تم الآن توثيق القيمة المرجعة لـ "الأنبوب".

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

بيرلوب

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

التشخيص

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

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

· محدد غير منته لهذه الوثيقة

تظهر هذه الرسالة الآن عندما تحتوي تسمية المستند هنا على علامة اقتباس أولية ولكن
علامة الاقتباس النهائية مفقودة.

يحل هذا محل رسالة خطأ زائفة ومضللة حول عدم العثور على الملصق نفسه
[perl # 114104].

· الذعر: لم تتم جدولة العملية الزائفة للأطفال على الإطلاق

يتم طرح هذا الخطأ عند تشغيل عملية زائفة فرعية في تنفيذ ithreads
لم تتم جدولة Windows خلال الفترة الزمنية المسموح بها، وبالتالي لم يتمكن من القيام بذلك
التهيئة بشكل صحيح [بيرل # 88840].

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

تمت إضافة هذا الخطأ إلى "(؟&0)"، وهو غير صالح. انها تستخدم لإنتاج
رسالة خطأ غير مفهومة [بيرل #101666].

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

يؤدي الآن استدعاء قيمة غير محددة كإجراء فرعي إلى ظهور رسالة الخطأ هذه. تستخدم
إلى، ولكن تم تعطيله عن طريق الخطأ، أولاً في Perl 5.004 للمتغيرات غير السحرية، و
ثم في Perl v5.14 للمتغيرات السحرية (على سبيل المثال، المرتبطة). وقد تم الآن استعادته. في
في هذه الأثناء، تم التعامل مع undef كسلسلة فارغة [Perl #113576].

· لم يتم تمكين الاشتراكات التجريبية "%s".

لاستخدام المفردات الفرعية، يجب عليك أولاً تمكينها:

لا توجد تحذيرات 'تجريبية::lexical_subs'؛
استخدم ميزة "lexical_subs"؛
فرعي فو { ... }

جديد تحذيرات

· 'السلاسل ذات نقاط التعليمات البرمجية التي تزيد عن 0xFF قد لا يتم تعيينها في مقابض الملفات الموجودة في الذاكرة'

· تم حل '%s' إلى '\o{%s}%d'

· "تم إهمال المسافة البيضاء الزائدة في تعريف الاسم المستعار للأسماء"

· "تم إهمال سلسلة من المسافات المتعددة في تعريف الاسم المستعار للأسماء"

· 'تمرير UTF-8 المشوه إلى "%s" مهمل'

· الروتين الفرعي "&%s" غير متوفر

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

فرعي { فرعي أ {...} فرعي و { \&a } }

في الوقت الذي يتم فيه إنشاء f، لا يمكنه التقاط التيار الفرعي "a"، نظرًا لأن
لم يتم إنشاء روتين فرعي مجهول بعد. على العكس من ذلك، فإن ما يلي لن يعطي
تحذير نظرًا لأن الروتين الفرعي المجهول قد تم إنشاؤه وأصبح مباشرًا:

sub { my sub a {...} eval 'sub f { \&a }' }->();

الحالة الثانية ناتجة عن وصول التقييم إلى متغير خرج
النطاق، على سبيل المثال،

فرعي و {
فرعي {...}
الفرعي { التقييم '\&a' }
}
f()->();

هنا، عندما يتم تجميع '\&a' في التقييم، لا يتم تشغيل f() حاليًا
تم تنفيذه، لذا فإن &a غير متاح للالتقاط.

· الإعلان السابق عن الروتين الفرعي &%s للأقنعة "%s" في نفس %s

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

· الميزة %s تجريبية

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

لا توجد تحذيرات "تجريبية::lexical_subs"؛
استخدام ميزة "lexical_subs"؛

· النوم(%u) كبير جدًا

(تجاوز W) لقد اتصلت بـ "النوم" برقم أكبر مما يمكن الاعتماد عليه
من المحتمل أن ينام المقبض و"النوم" لفترة أقل مما هو مطلوب.

· طابع واسع في setenv

محاولات وضع أحرف واسعة في متغيرات البيئة عبر %ENV تثير هذا الأمر الآن
تحذير.

· "الرقم السلبي (%s) غير صالح في مركز حقوق الإنسان"

يحذر الآن "chr()" عند تمرير قيمة سالبة [Perl #83048].

· "تجاوز عدد صحيح في راند"

يحذر "srand ()" الآن عند تمرير قيمة لا تتناسب مع "الأشعة فوق البنفسجية" (نظرًا لأن القيمة
سيتم اقتطاعها بدلاً من فائضها) [Perl #40605].

· "-استخدمت بدون أسماء ملفات في سطر الأوامر، للقراءة من STDIN"

تشغيل Perl مع العلامة "-i" يحذر الآن في حالة عدم توفير ملفات إدخال على الملف
سطر الأوامر [بيرل # 113410].

التغييرات إلى موجود التشخيص
· $* لم يعد معتمداً

يتم الآن إنشاء التحذير بأن استخدام $* و$# لم يعد مدعومًا لكل
الموقع الذي يشير إليهم. في السابق، كان من الممكن أن يفشل إنشاء ملف آخر
تمت رؤية المتغير الذي يستخدم نفس typeglob أولاً (على سبيل المثال "@*" قبل $*)، ولم يتم رؤيته
يتم إنشاؤها للاستخدام الثاني واللاحق. (من الصعب إصلاح الفشل
إنشاء تحذيرات على الإطلاق دون إصدارها أيضًا في كل مرة، والتحذير في كل مرة
الوقت يتوافق مع التحذيرات التي استخدمها $[ في إنشائها.)

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

· الثابت(%s): الاتصال بـ &{$^H{%s}} لم يُرجع قيمة محددة

يؤدي التحميل الزائد المستمر الذي يُرجع "undef" إلى ظهور رسالة الخطأ هذه. للرقمية
الثوابت، كان يُقال "ثابت(undef)". تم استبدال "undef" بـ
الرقم نفسه.

· الخطأ الذي يحدث عندما لا يمكن تحميل الوحدة يتضمن الآن إشارة إلى أن الوحدة
قد تحتاج إلى التثبيت: "لا يمكن تحديد موقع hopping.pm في @INC (قد تحتاج إلى التثبيت
وحدة التنقل) (@INC يحتوي على: ...)"

· ناقلات الحجة غير معتمدة مع إصدارات ألفا

لم يكن من الممكن منع هذا التحذير، حتى مع "عدم وجود تحذيرات". والآن أصبح قابلاً للقمع،
وتم نقله من الفئة "الداخلية" إلى الفئة "printf".

· "لا يمكن تنفيذ {n,m} باستخدام n > m في التعبير العادي؛ تم وضع علامة <-- هنا في m/%s/"

لقد تحول هذا الخطأ الفادح إلى تحذير نصه:

لا يمكن أن يتطابق المحدد الكمي {n,m} مع n > m في التعبير العادي

(W regexp) يجب أن يكون الحد الأدنى أقل من أو يساوي الحد الأقصى. إذا كنت تريد حقا الخاص بك
regexp لمطابقة شيء ما 0 مرة، فقط ضع {0}.

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

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

· تمت إزالة الخطأ "تعذر إنشاء فرعي مسمى %s" لنفس السبب.

· تم تخفيض الخطأ "لا يمكن استخدام "%s" الخاص بي في مقارنة الفرز" إلى تحذير،
""my %s" المستخدم في مقارنة الفرز" (مع "state" بدلاً من "my" لمتغيرات الحالة).
بالإضافة إلى ذلك، تم إساءة استخدام الأساليب الاستدلالية لتخمين ما إذا كان المعجم $a أو $b
تم تحسينها لتوليد عدد أقل من النتائج الإيجابية الكاذبة. المعجمي $a و$b لم يعدا موجودين
غير مسموح به إذا كانوا خارج كتلة الفرز. أيضًا، مشغل أحادي أو قائمة مسمى
داخل كتلة الفرز لم يعد يتسبب في تجاهل $a أو $b [Perl #86136].

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


h2xs

· h2xs لم يعد ينتج رمزًا غير صالح للتعريفات الفارغة. [بيرل #20636]

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


· تمت إضافة خيار "useversionedarchname" للتكوين

عند التعيين، فإنه يتضمن "api_versionstring" في "archname". على سبيل المثال
x86_64-linux-5.13.6-thread-multi. يتم إلغاء تعيينه بشكل افتراضي.

تم طلب هذه الميزة بواسطة Tim Bunce، الذي لاحظ أن "INSTALL_BASE" ينشئ ملف
بنية المكتبة التي لا تفرق حسب إصدار بيرل. بدلا من ذلك، فإنه يضع
ملفات محددة للهندسة المعمارية في "$install_base/lib/perl5/$archname". هذا يجعلها
من الصعب استخدام مسار مكتبة "INSTALL_BASE" الشائع مع إصدارات متعددة من Perl.

من خلال تعيين "-Duseversionedarchname"، سيكون اسم القوس $ مميزًا للهندسة المعمارية
إصدار API، مما يسمح بالاستخدام المختلط لـ "INSTALL_BASE".

· أضف خيار "PERL_NO_INLINE_FUNCTIONS".

إذا تم تعريف "PERL_NO_INLINE_FUNCTIONS"، فلا تقم بتضمين "inline.h"

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

· التكوين سيحترم متغير البيئة الخارجي "MAILDOMAIN"، إذا تم تعيينه.

· "installman" لم يعد يتجاهل الخيار الصامت

· يتم الآن تضمين ملفات "META.yml" و"META.json" في التوزيعة.

· ضبط سيكتشف الآن بشكل صحيح "isblank()" عند التحويل البرمجي باستخدام مترجم C++.

· كشف النداء في ضبط تم تحسينه للسماح بالاستجابات التي تحدد
خيارات بعد اسم البرنامج، على سبيل المثال / البيرة / بن / أقل -R، إذا وافق المستخدم على الإعداد الافتراضي
قيمة. هذا يساعد بيردوك عند التعامل مع هروب ANSI [Perl #72156].

الاختبار


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

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


توقف بلاتفورم
بيوس
BeOS هو نظام تشغيل لأجهزة الكمبيوتر الشخصية تم تطويره بواسطة شركة Be Inc، في البداية لـ
أجهزة BeBox الخاصة بهم. تمت كتابة نظام التشغيل Haiku كبديل مفتوح المصدر
من أجل/استمرار BeOS، ومنفذ Perl الخاص به حديث ويتم صيانته بشكل نشط.

يو تي اس العالمية
تمت إزالة رمز الدعم المتعلق بـ UTS global. كان UTS نسخة مركزية من
تم إنشاء النظام V بواسطة Amdahl، وتم بيعه لاحقًا إلى UTS Global. الميناء لم يكن
تم التطرق إليها منذ ما قبل الإصدار 5.8.0 من Perl، وأصبح UTS Global الآن غير موجود.

VM/وكالة الفضاء الأوروبية
تمت إزالة دعم VM/ESA. تم اختبار المنفذ على 2.3.0، وهو ما أنهته شركة IBM
تم تشغيل الخدمة في مارس 2002. وانتهت الخدمة 2.4.0 في يونيو 2003، وتم استبدالها بـ
Z/VM. الإصدار الحالي من Z/VM هو V6.2.0، ومن المقرر أن تنتهي الخدمة فيه
2015 / 04 / 30.

مب / التاسع
تمت إزالة دعم MPE/IX.

COPD
تمت إزالة رمز الدعم المتعلق بـ EPOC. كانت EPOC عائلة من التشغيل
الأنظمة التي طورتها شركة Psion للأجهزة المحمولة. لقد كان سلف سيمبيان.
تم تحديث الميناء آخر مرة في أبريل 2002.

افتتان
تمت إزالة الدعم لـ Rhapsody.

منصة خاصة ملاحظة
AIX

يضيف التكوين الآن دائمًا "-qlanglvl=extc99" إلى إشارات CC على AIX عند استخدام xlC. هذا
سيسهل تجميع عدد من الوحدات المستندة إلى XS والتي تفترض C99 [Perl
# 113778].

رنة ++

يوجد الآن حل بديل لخلل في برنامج التحويل البرمجي يمنع الترجمة باستخدام clang++ منذ ذلك الحين
بيرل v5.15.7 [بيرل #112786].

C + +

عند تجميع نواة Perl كـ C++ (وهو شبه مدعوم فقط)، تعمل الرياضيات
يتم تجميعها الآن كـ ""C خارجي""، لضمان التوافق الثنائي المناسب. (ومع ذلك، ثنائي
لا يتم ضمان التوافق عمومًا على أي حال في المواقف التي قد يحدث فيها ذلك
موضوع.)

داروين

أوقف ترميز المحاذاة على حدود 8 بايت لإصلاح الإصدارات باستخدام -Dusemorebits.

الهايكو

يجب أن يعمل Perl الآن خارج الصندوق على Haiku R1 Alpha 4.

منتصف الليل

تمت إزالة "libc_r" من الإصدارات الأخيرة من MidnightBSD وتعمل الإصدارات الأقدم بشكل أفضل
مع "pthread". تم تمكين الترابط الآن باستخدام "pthread" الذي يصحح أخطاء البناء باستخدامه
تم تمكين الترابط على 0.4-CURRENT.

سولاريس

في التكوين، تجنب تشغيل أوامر sed مع إشارات غير مدعومة في Solaris.

VMS

· حيثما أمكن، يتم الآن الاحتفاظ بحالة أسماء الملفات ووسائط سطر الأوامر بواسطة
تمكين ميزات CRTL "DECC$EFS_CASE_PRESERVE" و"DECC$ARGV_PARSE_STYLE" في
وقت بدء التشغيل. يصبح الأخير ساري المفعول فقط عند تمكين التحليل الموسع في ملف
العملية التي يتم تشغيل بيرل منها.

· تم الآن تمكين مجموعة الأحرف الخاصة بصيغة اسم الملف الممتد (EFS) افتراضيًا على نظام VMS.
من بين أمور أخرى، يوفر هذا معالجة أفضل للنقاط في أسماء الأدلة المتعددة
النقاط في أسماء الملفات، والمسافات في أسماء الملفات. للحصول على السلوك القديم، قم بتعيين
الاسم المنطقي "DECC$EFS_CHARSET" إلى "DISABLE".

· تم إصلاح الارتباط على الإصدارات التي تم تكوينها باستخدام "-Dusemymalloc=y".

· يتوفر الدعم التجريبي لبناء لغة Perl باستخدام مترجم HP C++
التكوين باستخدام "-Dusecxx".

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

· تتم الآن إزالة علامات الاقتباس من فعل الأمر (وليس المعلمات) للأوامر
تم إنتاجه عبر "النظام" أو العلامات الخلفية أو "فتح" عبر الأنابيب. سابقا، يقتبس على الفعل
تم تمريرها إلى DCL، والتي قد تفشل في التعرف على الأمر. كذلك إذا كان
الفعل هو في الواقع مسار إلى صورة أو إجراء أمر على مجلد ODS-5، نقلاً عن
يسمح الآن للمسار باحتواء مسافات.

· ال a2 ص تم إصلاح البنية لمترجم HP C++ على OpenVMS.

Win32

· يمكن الآن إنشاء لغة Perl باستخدام مترجم Microsoft Visual C++ 2012 عن طريق التحديد
CCTYPE=MSVC110 (أو MSVC110FREE إذا كنت تستخدم إصدار Express المجاني لنظام التشغيل Windows
سطح المكتب) في win32/Makefile.

· تمت إزالة خيار البناء بدون "USE_SOCKETS_AS_HANDLES".

· تم إصلاح مشكلة احتمال تعطل لغة Perl أثناء تنظيف سلاسل الرسائل (بما في ذلك الملف الرئيسي
Thread) في تصحيح الأخطاء المترابط يعتمد على Win32 وربما منصات أخرى [Perl
# 114496].

· حالة عرقية نادرة من شأنها أن تؤدي إلى أن يستغرق النوم وقتاً أطول من المطلوب، و
ربما تم إصلاح التعليق [Perl #33096].

· يحاول "الارتباط" الموجود على Win32 الآن تعيين $! إلى قيم أكثر ملاءمة بناءً على Win32
رمز خطأ واجهة برمجة التطبيقات. [بيرل #112272]

لم تعد لغة Perl تشوه كتلة البيئة، على سبيل المثال، عند إطلاق عملية فرعية جديدة،
عندما تحتوي البيئة على أحرف غير ASCII. المشاكل المعروفة لا تزال قائمة،
ومع ذلك، عندما تحتوي البيئة على أحرف خارج صفحة الرموز ANSI الحالية
(على سبيل المثال، راجع العنصر المتعلق بـ Unicode في %ENV في
<http://perl5.git.perl.org/perl.git/blob/HEAD:/Porting/todo.pod>). [بيرل #113536]

· بناء بيرل مع بعض برامج التحويل البرمجي لنظام التشغيل Windows كان يفشل بسبب وجود مشكلة
يقوم عامل التشغيل "glob" الخاص بـ miniperl (الذي يستخدم برنامج "perlglob") بحذف PATH
متغير البيئة [بيرل #113798].

· تمت إضافة خيار ملف تعريف جديد، "USE_64_BIT_INT"، إلى ملف تعريف Windows. تعيين
هذا "لتحديد" عند إنشاء بيرل 32 بت إذا كنت تريد أن يستخدم أعدادًا صحيحة 64 بت.

تخفيضات حجم رمز الجهاز، التي تم إجراؤها بالفعل على ملفات DLL الخاصة بوحدات XS في Perl v5.17.2،
لقد تم الآن تمديدها إلى Perl DLL نفسها.

تم كسر البناء باستخدام VC++ 6.0 عن غير قصد في الإصدار 5.17.2 من Perl ولكن تم إصلاحه الآن
مرة أخرى.

ويندوز سي

أصبح البناء على WinCE ممكنًا الآن مرة أخرى، على الرغم من الحاجة إلى المزيد من العمل بشكل كامل
استعادة بناء نظيف.

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


· تم إنشاء مرادفات للاسم المضلل "av_len()": "av_top_index()" و
"av_tindex". كل هذه العناصر الثلاثة تُرجع رقم أعلى مؤشر في المصفوفة،
وليس عدد العناصر التي يحتوي عليها.

· SvUPGRADE() لم يعد تعبيرا. في الأصل هذا الماكرو (وأساسه
وظيفة، sv_upgrade()) تم توثيقها على أنها منطقية، على الرغم من أنها في الواقع كانت دائمًا
اعوج على الخطأ ولم يعود كاذبا. في عام 2005 تم تحديث الوثائق إلى
تحديد قيمة إرجاع باطلة، ولكن SvUPGRADE() تم تركه دائمًا يعود 1 للخلف
التوافق. تمت إزالة هذا الآن، و SvUPGRADE() هو الآن بيان مع لا
قيمة الإرجاع.

إذن هذا الآن خطأ في بناء الجملة:

if (!SvUPGRADE(sv)) { croak(...); }

إذا كان لديك رمز مثل هذا، فما عليك سوى استبداله بـ

SvUPGRADE(sv);

أو لتجنب تحذيرات المترجم مع Perls الأقدم، ربما

(باطل)SvUPGRADE(sv);

· تمتلك لغة Perl آلية جديدة للنسخ عند الكتابة تسمح بترقية أي عدد قياسي من SvPOK إلى
عددية نسخة عند الكتابة. يتم تخزين عدد مرجعي في المخزن المؤقت للسلسلة في ملف
المخزن المؤقت للسلسلة نفسه. هذه الميزة ليس تمكين by الافتراضي.

يمكن تمكينه في بناء بيرل عن طريق التشغيل ضبط مع
-Accflags=-DPERL_NEW_COPY_ON_WRITE، ونحن نشجع مؤلفي XS على تجربة
رمز مع مثل هذا Perl الممكّن، وتقديم الملاحظات. لسوء الحظ، ليس هناك بعد
دليل جيد لتحديث كود XS للتعامل مع COW. حتى يتم مثل هذه الوثيقة
المتاحة، راجع القائمة البريدية لـ Perl5-porters.

إنه يكسر بعض وحدات XS عن طريق السماح للنسخ عند الكتابة بالمرور عبر مسارات التعليمات البرمجية
التي لم تواجههم من قبل.

· لم تعد ميزة النسخ عند الكتابة تستخدم علامتي SvFAKE وSvREADONLY. وبالتالي، سفير للقراءة فقط
يشير إلى SV حقيقي للقراءة فقط.

استخدم الماكرو SvIsCOW (كما كان من قبل) لتحديد عددية النسخ عند الكتابة.

· اختفى "PL_glob_index".

· تمت إزالة معلمة السياق الخاصة بـ Perl_croak_no_modify. لقد أصبح الآن
نموذج أولي فارغ. يظل مستخدمو واجهة برمجة التطبيقات العامة croak_no_modify غير متأثرين.

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

· تم تقديم نوع جديد من العمليات، "OP_PADRANGE". سوف يقوم مُحسِّن ثقب الباب Perl،
حيثما أمكن، استبدل عملية Padrange واحدة بعلامة ضغط متبوعة بواحدة أو أكثر
عمليات الوسادة، وربما أيضًا تخطي القائمة وعمليات الحالة التالية. بالإضافة إلى ذلك، يمكن للمرجع
تنفيذ المهام المرتبطة بـ RHS لمهمة "my(...) = @_"، لذا فإن تلك
قد يتم تحسين العمليات بعيدًا أيضًا.

· مطابقة غير حساسة لحالة الأحرف داخل فئة الأحرف [بين قوسين] ذات أحرف متعددة
لم تعد الطية تستبعد أحد الاحتمالات في الظروف التي اعتادت عليها.
[perl # 89774].

· تمت إزالة "PL_formfeed".

· لم يعد محرك التعبير العادي يقرأ بايتًا واحدًا بعد نهاية الهدف
خيط. بينما بالنسبة لجميع الكميات القياسية جيدة التكوين داخليًا، لا ينبغي أن يكون هذا أبدًا
المشكلة، هذا التغيير يسهل الحيل الذكية باستخدام المخازن المؤقتة للسلسلة في وحدات CPAN.
[بيرل #73542]

· داخل كتلة BEGIN، يشير "PL_compcv" الآن إلى الروتين الفرعي الذي يتم تجميعه حاليًا،
بدلاً من كتلة BEGIN نفسها.

· تم إهمال "mg_length".

· يقوم "sv_len" الآن بإرجاع عدد البايتات و"sv_len_utf8" عدد الأحرف.
في السابق، كان كل من "sv_len" و"sv_len_utf8" يحتويان على أخطاء وقد يعودان في بعض الأحيان
بايت وأحيانا أحرف. لم يعد "sv_len_utf8" يفترض أن وسيطته كذلك
في UTF-8. لا يقوم أي منهما بإنشاء ذاكرة تخزين مؤقت UTF-8 للقيم المقيدة أو المحملة بشكل زائد أو لـ
غير PVs بعد الآن.

· "sv_mortalcopy" يقوم الآن بنسخ المخازن المؤقتة لسلسلة مفاتيح التجزئة المشتركة عند استدعائها من
وحدات XS [بيرل #79824].

· يمكن تعيين العلم الجديد "RXf_MODIFIES_VARS" بواسطة محركات التعبير العادي المخصصة
تشير إلى أن تنفيذ التعبير العادي قد يتسبب في حدوث متغيرات
معدل. يتيح ذلك لـ "s///" معرفة ضرورة تخطي بعض التحسينات. بيرل العادية الخاصة
يقوم محرك التعبير بتعيين هذه العلامة للأفعال التراجعية الخاصة التي تحدد $REGMARK
و$REGERROR.

· لقد تغيرت واجهات برمجة التطبيقات للوصول إلى الوسادات المعجمية بشكل كبير.

أصبحت "PADLIST" الآن عبارة عن "AV" أطول، ولكنها نوع خاص بها بدلاً من ذلك. تحتوي "PADLIST" الآن على ملف
"PAD" و"PADNAMELIST" لـ "PADNAME"، بدلاً من "AV" للوحة وقائمة
أسماء الوسادة. يجب الوصول إلى "PAD" و"PADNAMELIST" و"PADNAME" على هذا النحو من خلال
واجهة برمجة تطبيقات اللوحة المضافة حديثًا بدلاً من واجهات برمجة التطبيقات "AV" و"SV" العادية. انظر بيرلابي ل
تفاصيل.

· في regex API، يتم تمرير عمليات الاسترجاعات المرقمة بفهرس يشير إلى ماذا
يتم الوصول إلى متغير المطابقة. توجد قيم فهرس خاصة لـ "$`، $&، $&"
المتغيرات. في السابق، تم استخدام نفس القيم الثلاث لاسترداد "${^PREMATCH}،
${^MATCH}، ${^POSTMATCH}" أيضًا، ولكن تم الآن تعيين ثلاث قيم منفصلة لها.
راجع "استدعاءات الالتقاط المرقمة" في perlreapi.

· كان "PL_sawampersand" في السابق قيمة منطقية تشير إلى أن أيًا من "$`، $&، $&" قد تم
تم رؤيته؛ يحتوي الآن على ثلاث إشارات ذات بت واحد تشير إلى وجود كل من
المتغيرات بشكل فردي.

· يدعم إدخال خريطة الكتابة "CV *" الآن التحميل الزائد "&{}" وtypeglobs، تمامًا مثل
"&{...}" [بيرل #96872].

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

يتم الآن التحقق من صلاحية جداول التحميل الزائد عند استدعاء أساليب التحميل الزائد،
وليس أثناء "يبارك".

لقد ذهب السحر "أ". تؤدي التغييرات التي تم إجراؤها على التعامل مع علامة "SVf_AMAGIC" إلى إزالة
بحاجة لذلك.

تمت إزالة "PL_amagic_generation" لأنه لم يعد ضروريًا. بالنسبة لوحدات XS، فهو كذلك
الآن اسم مستعار لماكرو لـ "PL_na".

يتم الآن تخزين إعداد التحميل الزائد الاحتياطي في إدخال مخبأ منفصل عن
الحمولة الزائدة نفسها.

· تم تنظيف رمز معالجة الأحرف في بعض الأماكن. يجب أن تكون التغييرات
غير مرئية من الناحية التشغيلية.

· تم حظر وظيفة "الدراسة" في الإصدار 5.16. لقد تم تعطيله ببساطة عن طريق "العودة"
إفادة؛ تم ترك الرمز في مكانه. الآن الكود الذي يدعم ما اعتادت عليه "الدراسة".
تمت إزالة القيام به.

· ضمن بيرل مترابطة، لم يعد هناك PV منفصلة مخصصة لكل COP
قم بتخزين اسم الحزمة الخاصة به ("cop->stashpv"). بدلا من ذلك، هناك إزاحة
("cop->stashoff") في مصفوفة "PL_stashpad" الجديدة، التي تحتوي على مؤشرات التخزين.

· في واجهة برمجة تطبيقات regex القابلة للتوصيل، اكتسبت بنية "regexp_engine" حقلاً جديدًا
"op_comp"، المخصص حاليًا للاستخدام الداخلي لـ Perl فقط، ويجب تهيئته
إلى NULL بواسطة وحدات البرنامج المساعد regex الأخرى.

· تمت إضافة وظيفة جديدة "alloccopstash" إلى واجهة برمجة التطبيقات، ولكن يتم أخذها في الاعتبار
تجريبي. انظر بيرلابي.

· يستخدم بيرل لتنفيذ عملية الحصول على السحر بطريقة قد تؤدي في بعض الأحيان إلى إخفاء الأخطاء في التعليمات البرمجية
يمكن الاتصال mg_get() مرات عديدة على القيم السحرية. هذا إخفاء الأخطاء لم يعد
يحدث ذلك، لذا قد تصبح الأخطاء القديمة مرئية الآن. إذا رأيت أخطاء متعلقة بالسحر
في رمز XS، تحقق للتأكد من أنه، جنبًا إلى جنب مع وظائف Perl API التي يستخدمها، يستدعي
mg_get() مرة واحدة فقط SvGMAGICAL() القيم.

· يستخدم الآن تخصيص OP للسير الذاتية مُخصصًا لوحيًا. وهذا يبسط إدارة الذاكرة
بالنسبة إلى العمليات التشغيلية المخصصة للسيرة الذاتية، فإن التنظيف بعد حدوث خطأ في الترجمة يكون أسهل وأسهل
أكثر أمانًا [بيرل #111462] [بيرل #112312].

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

· مُخصص الشريحة القديم للعمليات، والذي تم تمكينه فقط لـ "PERL_IMPLICIT_SYS" و
تم إيقاف "PERL_DEBUG_READONLY_OPS".

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


· هنا لم تعد أدوات إنهاء الوثيقة تتطلب حرف إنهاء جديد للسطر الجديد عندما تكون
تحدث في نهاية الملف. كان هذا هو الحال بالفعل في نهاية تقييم السلسلة
[perl # 65838].

· "-DPERL_GLOBAL_STRUCT" يبني الآن البنية العالمية الحرة بعد لقد انتهوا من الاستخدام
هنا.

· لن يكون للعلامة "/" اللاحقة على المسار في @INC ملحق "/" إضافي.

· تعمل الطبقة ":crlf" الآن عندما لا تتناسب البيانات غير المقروءة مع المخزن المؤقت الخاص بها. [بيرل
# 112244].

· يتعامل الآن "ungetc()" مع البيانات المشفرة باستخدام UTF-8. [بيرل #116322].

· تسبب خطأ في خريطة الكتابة الأساسية في تعيين أي أنواع لغة C إلى إدخال خريطة الكتابة الأساسية لـ T_BOOL
عدم تعيينه أو تحديثه أو تعديله عند استخدام متغير T_BOOL في OUTPUT:
القسم باستثناء RETVAL. T_BOOL في INPUT: لم يتأثر القسم.
لم يتأثر استخدام نوع الإرجاع T_BOOL لـ XSUB (RETVAL). أحد الآثار الجانبية ل
إصلاح هذا الخطأ هو، إذا تم تحديد T_BOOL في قسم OUTPUT: (أي القسم السابق
لم يفعل شيئًا إلى SV)، ويتم تمرير SV للقراءة فقط (حرفيًا) إلى XSUB، نعيق
مثل "محاولة تعديل قيمة للقراءة فقط" سيحدث. [بيرل #115796]

· في العديد من الأنظمة الأساسية، أدى توفير اسم دليل كاسم البرنامج النصي إلى قيام بيرل بذلك
لا شيء وتقرير النجاح. يجب عليه الآن الإبلاغ عن خطأ عالميًا والخروج
غير صفرية. [بيرل #61362]

· "نوع {Undef} ..." تحت التحذيرات القاتلة لم يعد يتعطل. لقد بدأ في الانهيار
بيرل v5.16.

· تبارك المخابئ في بعضها البعض ("بارك \%Foo::, 'Bar'; بارك \%Bar::, 'Foo'") لا
يعد يؤدي إلى تحريرات مزدوجة. بدأ هذا الخطأ بالحدوث في الإصدار 5.16 من Perl.

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

· بعض تطابقات التعبير العادي الفاشلة مثل "'f' =~ /../g" لم تتم إعادة تعيينها
"نقاط البيع". كما فشلت أنماط "المطابقة مرة واحدة" ("m?...?g") في إعادة تعيينها أيضًا عند استدعائها
مرة ثانية [بيرل #23180].

· العديد من الأخطاء التي تتضمن "*ISA المحلي" و"*Foo المحلي::" مما تسبب في وجود ذاكرة تخزين مؤقت قديمة لـ MRO
تم إصلاحه.

· تحديد روتين فرعي عندما يكون typeglob الخاص به مستعارًا لم يعد يؤدي إلى تقادم
مخابئ الطريقة. تم تقديم هذا الخطأ في الإصدار 5.10 من Perl.

· تحديد موقع typeglob الذي يحتوي على روتين فرعي عندما تكون حزمة typeglob موجودة
لم يعد المحذوف من مخبأه الأصلي ينتج عنه خطأ. تم تقديم هذا الخطأ في
بيرل v5.14.

· في بعض الظروف، قد يفشل "*method=..." المحلي في إعادة تعيين ذاكرات التخزين المؤقت للأسلوب
خروج النطاق.

· "/[.foo.]/" لم يعد خطأً، ولكنه ينتج تحذيرًا (كما كان من قبل) ويتم التعامل معه
كـ "/[.fo]/" [بيرل #115818].

· يستدعي "goto $tied_var" الآن FETCH قبل تحديد نوع الانتقال إلى (الروتين الفرعي أو
التسمية) هذا هو.

· إعادة تسمية الحزم من خلال التعيين الشامل ("*Foo:: = *Bar::; *Bar:: = *Baz::") في
مزيج مع "م؟...؟" و"إعادة الضبط" لم تعد تتسبب في تعطل الإصدارات المترابطة.

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

· التعبير "الرقمية(%h = (1, 1, 1, 1))" يُرجع الآن 4، وليس 2.

· القيمة المرجعة "%h = (1, 1, 1)" في سياق القائمة كانت خاطئة. سبق هذا
ستُرجع "(1، undef، 1)"، والآن تُرجع "(1، undef)".

· تصدر لغة Perl الآن نفس التحذير على "($s, %h) = (1, {})" كما تفعل مع "(%h) =
({})"، "تم العثور على مرجع حيث كانت القائمة ذات الحجم الزوجي متوقعة".

· تم تصحيح عدد من حالات الحافة الإضافية في القائمة المخصصة للتجزئات. ل
مزيد من التفاصيل راجع الالتزام 23b7025ebc.

· السمات المطبقة على المتغيرات المعجمية لم تعد تتسرب إلى الذاكرة. [بيرل #114764]

· "تفريغ" أو "انتقال" أو "الأخير" أو "التالي" أو "إعادة" أو "يتطلب" متبوعة بكلمة مجردة (أو
الإصدار) ومن ثم لم يعد عامل التشغيل infix خطأً في بناء الجملة. اعتاد أن يكون ل
عوامل التشغيل هذه (مثل "+") التي لها معنى مختلف حيث يوجد المصطلح
مُتوقع. [بيرل #105924]

· لم تعد "تتطلب a::b . 1" و"تتطلب a::b + 1" تنتج غموضًا خاطئًا
تحذيرات. [بيرل #107002]

· يُسمح الآن باستدعاء أسلوب الفصل على أي سلسلة، وليس فقط السلاسل التي تبدأ بـ
حرف أبجدي رقمي. [بيرل #105922]

· النمط الفارغ الذي تم إنشاؤه باستخدام "qr//" المستخدم في "m///" لم يعد يؤدي إلى تشغيل "فارغ"
النمط يعيد استخدام سلوك النمط الأخير". [Perl #96230]

· ربط التجزئة أثناء التكرار لم يعد يؤدي إلى تسرب الذاكرة.

· لم يعد تحرير التجزئة المقيدة أثناء التكرار يؤدي إلى تسرب الذاكرة.

· قائمة الإحالة إلى مصفوفة مرتبطة أو تجزئة تموت على STORE لم تعد تؤدي إلى ملف
تسريب ذاكرة.

· إذا كان تجزئة التلميح ("%^H") مرتبطًا، فسيتم إدخال نطاق وقت الترجمة (الذي ينسخ التلميح
hash) لم يعد يتسرب من الذاكرة إذا مات FETCH. [بيرل #107000]

· لم يعد الطي المستمر يؤدي بشكل غير مناسب إلى سلوك "الانقسام" الخاص.
[بيرل #94490]

· "المحدد العددي (@array)"، "المحدد do { &foo }"، والبنيات المشابهة تتعامل الآن مع
حجة ل"محددة" باعتبارها عددية بسيطة. [بيرل #97466]

· تشغيل تصحيح الأخطاء المخصص الذي لا يحدد *DB::DB glob أو يوفر كعب روتين فرعي
لـ &DB::DB لم يعد يؤدي إلى حدوث عطل، بل يحدث خطأ بدلاً من ذلك. [بيرل #114990]

· "إعادة تعيين """ يتطابق الآن مع وثائقه. "إعادة تعيين" يؤدي فقط إلى إعادة تعيين "م؟...؟" الأنماط عندما
دعا دون حجة. السلسلة الفارغة للوسيطة لا تفعل شيئًا الآن. (تستخدم
ليتم التعامل معها على أنها لا حجة.) [Perl #97958]

· "printf" مع الوسيطة التي تُرجع قائمة فارغة لم تعد تُقرأ بعد نهاية الملف
كومة، مما أدى إلى سلوك خاطئ. [بيرل #77094]

· "--subname" لم يعد ينتج تحذيرات غموض خاطئة. [بيرل #77240]

· "v10" مسموح به الآن كتسمية أو اسم حزمة. تم كسر هذا عن غير قصد عندما
تمت إضافة سلاسل v في Perl v5.6. [بيرل #56880]

· يمكن الخلط بين "الطول" و"pos" و"substr" و"sprintf" بسبب الروابط أو التحميل الزائد أو
المراجع وtypeglobs إذا أدى تقييد ذلك إلى تغيير الملف الداخلي
التمثيل إلى أو من UTF-8. [بيرل #114410]

utf8::encode يدعو الآن الجلب والتخزين على المتغيرات المرتبطة. utf8 :: فك التشفير يدعو الآن
STORE (كان يتصل بالفعل بـ FETCH).

· لم تعد "$tied =~ s/$non_utf8/$utf8/" تتكرر بلا حدود إذا عاد المتغير المرتبط
سلسلة لاتينية 1، أو عددية من مفتاح التجزئة المشترك، أو مرجع أو typeglob يُصنف كـ
ASCII أو اللاتينية-1. كان هذا تراجعًا عن الإصدار 5.12.

· أصبح "s///" بدون /e أفضل الآن في اكتشاف الوقت الذي يحتاج فيه إلى التخلي عن أمر محدد
التحسينات، وإصلاح بعض حالات عربات التي تجرها الدواب:

· مطابقة المتغيرات في بنيات معينة ("&&"، "||"، ".." وغيرها) في
قطعة بديلة؛ على سبيل المثال، "s/(.)/$l{$a||$1}/g". [بيرل #26986]

· الأسماء المستعارة لمطابقة المتغيرات في الاستبدال.

· $REGERROR أو $REGMARK في الاستبدال. [بيرل #49190]

· نمط فارغ ("s//$foo/") يتسبب في استخدام النمط الأخير الناجح،
عندما يحتوي هذا النمط على كتل تعليمات برمجية تقوم بتعديل المتغيرات في ملف
الاستبدال.

· لم يعد تلوث السلسلة البديلة يؤثر على تلوث السلسلة
القيمة المرجعة لـ "s///e".

· ال $| يتم إنشاء متغير التدفق التلقائي أثناء التنقل عند الحاجة. إذا حدث هذا (على سبيل المثال،
إذا تم ذكره في وحدة نمطية أو تقييم) عندما كان مقبض الملف المحدد حاليًا هو a
typeglob مع فتحة إدخال/إخراج فارغة، كان يتعطل. [بيرل #115206]

· أرقام الأسطر في نهاية سلسلة التقييم لم تعد متباعدة بمقدار واحد. [بيرل #114658]

· مرشحات @INC (الإجراءات الفرعية التي يتم إرجاعها بواسطة الإجراءات الفرعية في @INC) التي تحدد $_ إلى نسخة على-
لم تعد الكتابة العددية تتسبب في قيام المحلل اللغوي بتعديل المخزن المؤقت للسلسلة في مكانه.

· لم يعد "length($object)" يُرجع القيمة غير المحددة إذا كان الكائن يحتوي على سلسلة
الحمولة الزائدة التي ترجع undef. [بيرل #115260]

· تم استخدام "PL_stashcache"، ذاكرة التخزين المؤقت للبحث عن اسم المخبأ لاستدعاءات الطريقة
رمم،

أدى ارتكاب da6b625f78f5f133 في أغسطس 2011 إلى كسر الكود الذي يبحث عن غير قصد
القيم في "PL_stashcache". نظرًا لأنها ذاكرة التخزين المؤقت الوحيدة، فقد تم تنفيذ كل شيء بشكل صحيح تمامًا
العمل بدونها.

· الخطأ "لا يمكن الترجمة من خلال مرجع" قد اختفى في الإصدار 5.16.0 عندما "محلي
"ظهر %$ref" في السطر الأخير من الإجراء الفرعي lvalue. اختفى هذا الخطأ لمدة
"\local %$ref" في الإصدار 5.8.1 من بيرل. وقد تم الآن استعادته.

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

· داخل التقييم، لم تعد رسالة الخطأ الخاصة بمستند هنا غير المنتهي تحتوي على سطر جديد
في منتصفها [بيرل #70836].

· الاستبدال داخل نمط الاستبدال ("s/${s|||}//") لم يعد يربك
محلل.

· قد يكون مكانًا غريبًا للسماح بالتعليقات، ولكن "s//"" # hello/e" يعمل دائمًا،
ما لم يحدث أن يكون هناك حرف فارغ قبل الرقم الأول. الآن يعمل حتى في
وجود القيم الخالية.

· لم يعد النطاق غير الصالح في "tr///" أو "y///" يؤدي إلى تسرب الذاكرة.

· لم يعد تقييم السلسلة يعامل عامل التشغيل المشابه لعلامة الاقتباس المفصولة بفواصل منقوطة في النهاية
("eval 'q;;'") كخطأ في بناء الجملة.

· "warn {$_ => 1} + 1" لم يعد خطأً نحويًا. كان المحلل اللغوي يشعر بالارتباك
مع عوامل تشغيل قائمة معينة متبوعة بتجزئة مجهولة ثم عامل تشغيل infix
التي تشترك في شكلها مع عامل أحادي.

· "(المتصل $n)[6]" (الذي يعطي نص التقييم) يستخدم لإرجاع المحلل اللغوي الفعلي
متعادل. قد يؤدي تعديله إلى حدوث أعطال. الآن تقوم دائمًا بإرجاع نسخة. ال
لم تعد السلسلة التي تم إرجاعها تحتوي على "\n;" علق حتى النهاية. النص الذي تم إرجاعه أيضًا
يتضمن أجسام هنا-doc، والتي تم حذفها في السابق.

· تتم الآن إعادة ضبط ذاكرة التخزين المؤقت لموضع UTF-8 عند الوصول إلى المتغيرات السحرية، لتجنب حدوث ذلك
خروج المخزن المؤقت للسلسلة وذاكرة التخزين المؤقت لموضع UTF-8 عن المزامنة [Perl #114410].

· تم استدعاء حالات مختلفة للحصول على السحر مرتين لسلاسل UTF-8 السحرية
ثابتة.

· هذا الرمز (في حالة عدم وجود $& إلخ)

$_ = 'x' x 1_000_000;
1 بينما /(.)/;

تم استخدامه لتخطي النسخة المؤقتة لأسباب تتعلق بالأداء، ولكنه عانى من $1 وما إلى ذلك
يتغير إذا تغيرت السلسلة الأصلية. لقد تم إصلاح ذلك الآن.

· لم يعد Perl يستخدم PerlIO للإبلاغ عن رسائل الذاكرة، كما قد يفعل PerlIO
محاولة تخصيص المزيد من الذاكرة.

· في التعبير العادي، إذا تم قياس شيء ما باستخدام "{n,m}" حيث "n > m"، فإنه
لا يمكن أن تتطابق. في السابق كان هذا خطأً فادحًا، لكنه الآن مجرد تحذير
(وهذا الشيء لن يتطابق). [بيرل #82954].

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

· إعادة تعريف XSUBs في وقت التشغيل قد ينتج عنه تحذيرات برقم سطر خاطئ.

· لا يدعم تنسيق %vd sprintf كائنات الإصدار لإصدارات ألفا. تستخدم
لإخراج التنسيق نفسه (%vd) عند تمرير إصدار ألفا، وكذلك إرسال ملف
تحذير "تحويل غير صالح في printf". لم تعد تفعل ذلك، بل تنتج الفراغ
سلسلة في الإخراج. كما أنه لم يعد يتسرب من الذاكرة في هذه الحالة.

· يمكن أن تفشل استدعاءات "$obj->SUPER::method" في الحزمة الرئيسية إذا كانت الحزمة SUPER تحتوي على
تم الوصول إليها بالفعل عن طريق وسائل أخرى.

· لم يعد الاسم المستعار المخبأ ("*foo:: = *bar::") يتسبب في تجاهل مكالمات SUPER للتغييرات التي تم إجراؤها
الأساليب أو @ISA أو استخدام الحزمة الخاطئة.

· استدعاءات الأسلوب على الحزم التي تنتهي أسماؤها بـ ::SUPER لم تعد تعامل على أنها SUPER
استدعاءات الطريقة، مما يؤدي إلى الفشل في العثور على الطريقة. علاوة على ذلك، تعريف
لم تعد الإجراءات الفرعية الموجودة في هذه الحزم تتسبب في العثور عليها من خلال استدعاءات الأسلوب SUPER
على الحزمة التي تحتوي على [بيرل #114924].

· يتطابق "\w" الآن مع نقطتي الرمز U+200C (ZERO WIDTH NON-OINER) وU+200D (ZERO WIDTH)
نجار). "\W" لم يعد يطابق هذه. يرجع هذا التغيير إلى تصحيح Unicode
تعريفهم لما يجب أن يتطابق مع "\w".

· "تفريغ LABEL" لم يعد يتسرب من علامته التجارية.

· لم يعد الطي المستمر يغير سلوك الوظائف مثل "stat()" و
"truncate()" التي يمكن أن تأخذ أسماء الملفات أو المقابض. "stat 1 ? foo : bar" الآن
يعامل حجته كاسم ملف (نظرًا لأنه تعبير عشوائي)، بدلاً من
المقبض "فو".

· "truncate FOO, $len" لم يعد يتراجع إلى التعامل مع "FOO" كاسم ملف إذا كان
تم حذف مقبض الملف. تم كسر هذا في Perl v5.16.0.

· لم تعد إعادة التعريفات الروتينية بعد التعيينات الفرعية إلى العالمية ومن العالمية إلى العالمية
يسبب تحريرًا مزدوجًا أو رسائل ذعر.

· "s///" الآن يحول سلاسل vs إلى سلاسل عادية عند إجراء الاستبدال، حتى لو كان
السلسلة الناتجة هي نفسها ("s/a/a/").

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

· لم تعد الإجراءات الفرعية الثابتة والإعلانات الأمامية تمنع عدم تطابق النموذج الأولي
تحذيرات من حذف الاسم الفرعي.

· "undef" في روتين فرعي يقوم الآن بمسح أدوات فحص المكالمات.

· بدأ عامل التشغيل "ref" في تسريب الذاكرة الخاصة بالكائنات المباركة في الإصدار 5.16.0 من Perl. هذا
تم إصلاحه [بيرل #114340].

· لم تعد كلمة "use" تحاول تحليل وسيطاتها كعبارة، مما يجعل "استخدام ثابت { ()"
};" خطأ في بناء الجملة [بيرل #114222].

· عند تصحيح الأخطاء، لم تعد التحذيرات "غير المهيأة" داخل التنسيقات تسبب التأكيد
الفشل.

· في عمليات تصحيح الأخطاء، لم تعد الإجراءات الفرعية المتداخلة داخل التنسيقات تسبب التأكيد
حالات الفشل [بيرل #78550].

· التنسيقات وبيانات "الاستخدام" مسموح بها الآن داخل التنسيقات.

· "print $x" و"sub { print $x }->()" الآن ينتجان دائمًا نفس المخرجات. كان
من الممكن أن يرفض الأخير الإغلاق فوق $x إذا لم يكن المتغير نشطًا؛
على سبيل المثال، إذا تم تعريفه خارج روتين فرعي مسمى قيد التشغيل حاليًا.

· وبالمثل، فإن "print $x" و"print eval '$x'" ينتجان الآن نفس المخرجات. وهذا ايضا
يسمح برؤية متغيرات "my $x if 0" في مصحح الأخطاء [Perl #114018].

· التنسيقات التي يتم استدعاؤها بشكل متكرر لم تعد تعتمد على المتغيرات المعجمية الخاصة بها، بل كل منها
الدعوة العودية لها مجموعتها الخاصة من المفردات.

· لم تعد محاولة تحرير تنسيق نشط أو المقبض المرتبط به تؤدي إلى نتائج
في حادث تحطم طائرة.

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

· يمكن الآن أن تكون الصيغ متداخلة داخل كتل التعليمات البرمجية في التعبيرات العادية وغيرها من علامات الاقتباس
البنيات ("/(؟{...})/" و"qq/${...}/") [بيرل #114040].

· لم يعد يتم إنشاء التنسيقات بعد أخطاء التجميع.

· ضمن بنيات التصحيح، -دا بدأ خيار سطر الأوامر في التعطل في Perl v5.16.0.
لقد تم إصلاحه [بيرل #114368].

· سيناريو الجمود المحتمل الذي يتضمن الإنهاء المبكر للتشعب الزائف
تم إصلاح الطفل في إصدار Windows مع تمكين threads. هذا يحل
مشكلة شائعة في t/op/fork.t اختبار معلق على نظام التشغيل Windows [Perl #88840].

· الكود الذي يولد الأخطاء من "require()" من المحتمل أن يقرأ واحدًا أو اثنين
بايت قبل بداية اسم الملف لأسماء الملفات التي يقل طولها عن ثلاث بايت و
تنتهي "/\.p?\z/". هذا قد تم اصلاحه. لاحظ أنه لا يمكن أن يحدث أبدًا
مع إعطاء أسماء الوحدات النمطية لـ "use()" أو "require()" على أي حال.

· أصبح التعامل مع أسماء مسارات الوحدات النمطية المعطاة لـ "require()" آمنًا
نظام مراقبة السفن.

· تم إصلاح المآخذ غير المحظورة على نظام VMS.

· يمكن الآن أن تكون متداخلة في التعليمات البرمجية داخل بناء مقتبس خارج تقييم السلسلة.
كان هذا يعمل فقط ضمن تقييمات السلسلة [Perl #114040].

· يبحث "goto ''" الآن عن تسمية فارغة، مما يؤدي إلى ظهور الخطأ "goto must has label".
الرسالة، بدلاً من الخروج من البرنامج [Perl #111794].

· يتم الآن حذف "goto "\0"" مع عبارة "لا يمكن العثور على التسمية" بدلاً من "يجب أن يكون لدى goto تسمية".

· الدالة C "hv_store" المستخدمة تؤدي إلى حدوث أعطال عند استخدامها على "%^H" [Perl #111000].

· تم الآن نسخ مدقق المكالمات المرفق بنموذج الإغلاق عبر "cv_set_call_checker".
إلى عمليات الإغلاق المستنسخة منه. لذلك يعمل "cv_set_call_checker" الآن داخل إحدى السمات
معالج للإغلاق.

· الكتابة إلى $^N لم يكن لها أي تأثير. الآن هو ينعق مع "تعديل قراءة-
القيمة فقط" بشكل افتراضي، ولكن يمكن تجاوز ذلك بواسطة تعبير عادي مخصص
المحرك، كما هو الحال مع $1 [Perl #112184].

· لم تعد كلمة "undef" الموجودة على كتلة حرف التحكم ("undef *^H") تصدر تحذيرًا خاطئًا
حول الغموض [بيرل #112456].

· من أجل الكفاءة، العديد من العوامل والوظائف المضمنة تعيد نفس العدد
كل مرة. تم السماح بإجراءات Lvalue وإجراءات فرعية في مساحة الاسم CORE::
تفاصيل التنفيذ هذه للتسرب من خلالها. "طباعة &CORE::uc("a"), &CORE::uc("b")"
تستخدم لطباعة "BB". سيحدث نفس الشيء مع عودة الروتين الفرعي lvalue
القيمة المرجعة لـ "uc". الآن يتم نسخ القيمة في مثل هذه الحالات.

· "طريقة {}" بناء الجملة مع كتلة فارغة أو كتلة تعود إلى قائمة فارغة
تعطل أو استخدم بعض القيمة العشوائية المتبقية على المكدس كمستدعي لها. الآن تنتج
خطأ.

· يعمل "vec" الآن مع إزاحات كبيرة للغاية (> 2 جيجابايت) [Perl #111730].

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

الكائنات التي تم إنشاؤها قبل أن يتم استخدام أي تحميل زائد للفصل لتظل غير
محمّل بشكل زائد حتى لو حصل الفصل على تحميل زائد من خلال "استخدام التحميل الزائد" أو @ISA
التغييرات، وحتى بعد "يبارك". لقد تم إصلاح هذا [بيرل #112708].

· يمكن الآن للفئات ذات التحميل الزائد أن ترث القيم الاحتياطية.

· التحميل الزائد لم يكن يحترم القيمة الاحتياطية 0 إذا كانت هناك كائنات مثقلة
على جانبي عامل التعيين مثل "+=" [Perl #111856].

· يتم الآن استخدام "pos" باستخدام وسيطات التجزئة والصفيف، بدلاً من إنتاج حجج خاطئة
التحذيرات.

· "بينما(كل %h)" يعني الآن "بينما(محدد($_ = كل %h))"، مثل "readline" و
"قراءة دير".

· الغواصات في CORE:: لم تعد مساحة الاسم تتعطل بعد "Undef *_" عند الاتصال بـ no
قائمة الوسيطات (&CORE::time بدون أقواس).

· "تفريغ" لم يعد ينتج الخطأ "'/' يجب أن يتبع نوعًا رقميًا في التفريغ" عندما
إنها البيانات التي بها خطأ [Perl #60204].

· يتم الآن استدعاء "الانضمام" و"@array" لـ FETCH مرة واحدة فقط على $ مرتبط" [Perl #8931].

· بعض الاستدعاءات الروتينية الناتجة عن تجميع العمليات الأساسية المتأثرة بـ "CORE::GLOBAL"
تم إجراء فحص التجاوز مرتين. التحقق دائمًا غير فعال للنقاء
رمز Perl، ولكن التحقق المزدوج يمكن أن يكون مهمًا عند استخدام مدققي المكالمات المخصصين.

· وجود حالة سباق حول الشوكة يمكن أن تتسبب في إرسال إشارة إلى
الوالدين ليتم التعامل معها من قبل كل من الوالدين والطفل. يتم الآن حظر الإشارات لفترة وجيزة
شوكة لمنع حدوث ذلك [Perl #82580].

· تنفيذ كتل التعليمات البرمجية في التعبيرات العادية مثل "(?{})" و
"(؟؟{})"، تم إعادة صياغتها بشكل كبير لإزالة عدد كبير من الأخطاء. المستخدم الرئيسي-
التغييرات المرئية هي:

· يتم الآن تحليل كتل التعليمات البرمجية داخل الأنماط بنفس المسار المحيط
شفرة؛ على وجه الخصوص، لم يعد من الضروري وجود تقويم أسنان متوازن: هذا الآن
الأشغال:

/(?{ $x='{' })/

وهذا يعني أنه لم يعد يتم إنشاء رسالة الخطأ هذه:

التسلسل (؟{...}) لم يتم إنهاؤه أم لا {}-متوازن في التعبير العادي

ولكن قد يظهر خطأ جديد:

التسلسل (؟{...}) لم يتم إنهاؤه بـ ')'

بالإضافة إلى ذلك، يتم تجميع كتل التعليمات البرمجية الحرفية ضمن أنماط وقت التشغيل مرة واحدة فقط،
في وقت الترجمة بيرل:

ل $p (...) {
# يتم تجميع كتلة التعليمات البرمجية "FOO" هذه مرة واحدة،
# في نفس الوقت مع الحلقة "for" المحيطة
/$p{(?{FOO;})/;
}

· أصبحت المتغيرات المعجمية الآن سليمة فيما يتعلق بالنطاق والتكرار وسلوك الإغلاق.
على وجه الخصوص، يتصرف "/A(?{B})C/" (من وجهة نظر الإغلاق) تمامًا مثل "/A/
&& do { B } && /C/"، بينما "qr/A(?{B})C/" يشبه "sub {/A/ && do { B } && /C/}".
إذن يعمل هذا الرمز الآن بالطريقة التي قد تتوقعها، حيث يقوم بإنشاء ثلاثة تعبيرات عادية تتطابق مع 0،
1 و 2:

لبلدي $i (0..2) {
ادفع @r, qr/^(??{$i})$/;
}
"1" =~ $r[1]; # اعواد الكبريت

· أصبحت عملية "استخدام إعادة التقييم" مطلوبة الآن فقط لمجموعات التعليمات البرمجية المحددة في
مدة العرض؛ على وجه الخصوص، في ما يلي، لا يزال نص النمط $r
محرف في النمط الجديد وإعادة تجميعها، ولكن تجميعها الفردية
يتم إعادة استخدام كتل التعليمات البرمجية داخل $r بدلاً من إعادة ترجمتها، و"استخدم re 'eval'"
ليست هناك حاجة بعد الآن:

$r = qr/abc(?{....})def/;
/xyz$r/;

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

· تقوم لغة Perl عادة بتخزين مجموعة أنماط وقت التشغيل مؤقتًا، ولا تقوم بإعادة الترجمة
إذا لم يتغير النمط، ولكن تم تعطيله الآن إذا كان ذلك مطلوبًا لـ
السلوك الصحيح للإغلاق. على سبيل المثال:

رمز $ الخاص بي = '(؟؟{$x})';
لبلدي $x (1..3) {
# أعد الترجمة لترى قيمة جديدة بقيمة $x في كل مرة
$x =~ /$code/;
}

· يتم الآن نشر علامتي "/msix" و"(?msix)" وما إلى ذلك في القيمة المرجعة من
"(؟؟{})"; هذا يعمل الآن:

"AB" =~ /a(??{'b'})/i;

· ستظهر التحذيرات والأخطاء قادمة من التعليمات البرمجية المحيطة (أو أثناء التشغيل
كتل التعليمات البرمجية، من التقييم) بدلاً من "re_eval":

استخدم إعادة 'التقييم'؛ $c = '(?{ تحذير "foo" })'; /$ج/;
/(?{ تحذير "foo" })/;

أعطى سابقا:

foo في (re_eval 1) السطر 1.
foo في (re_eval 2) السطر 1.

ويعطي الآن:

foo في (التقييم 1) السطر 1.
foo في /some/prog السطر 2.

· يمكن الآن إعادة ترجمة لغة Perl لاستخدام أي إصدار Unicode. في الإصدار 5.16، عملت على
Unicodes 6.0 و6.1، ولكن كانت هناك أخطاء مختلفة إذا تم استخدام الإصدارات السابقة؛ ال
أقدم الإصدار والمزيد من المشاكل.

· لم تعد كلمة "vec" تنتج تحذيرات "غير مهيأة" في سياق القيمة [Perl #9423].

· يمكن أن يؤدي التحسين الذي يتضمن سلاسل ثابتة في التعبيرات العادية إلى حدوث ضرر شديد
عقوبة الأداء في حالات الحافة. لقد تم إصلاح هذا [بيرل #76546].

· في حالات معينة، بما في ذلك الأنماط الفرعية الفارغة ضمن التعبير العادي (مثل
قد يؤدي "(?:)" أو "(?:|)") إلى تعطيل بعض التحسينات. لقد تم إصلاح هذا.

· الرسالة "لا يمكن العثور على رقم opnumber" التي ينتجها "النموذج الأولي" عند تمرير سلسلة
مثل "CORE::nonexistent_keyword" يمرر الآن UTF-8 والوحدات NUL المضمنة دون تغيير
[perl # 97478].

· يتعامل "النموذج الأولي" الآن مع المتغيرات السحرية مثل $1 بنفس الطريقة التي يتعامل بها مع المتغيرات غير السحرية
عند التحقق من البادئة CORE::، بدلاً من معاملتها كأسماء روتين فرعي.

· ضمن الـ Perls المترابطة، قد تؤدي كتلة التعليمات البرمجية لوقت التشغيل في التعبير العادي إلى إتلاف ملف
اسم الحزمة المخزن في شجرة العمليات، مما يؤدي إلى قراءة سيئة في "المتصل"، وربما
الأعطال [بيرل #113060].

· الرجوع إلى نموذج الإغلاق الأولي ("\&{$_[1]}" في معالج السمة للإغلاق) لا
أطول يؤدي إلى نسخة من الروتين الفرعي (أو فشل التأكيد على تصحيح الأخطاء
يبني).

· يقوم "eval '__PACKAGE__'" الآن بإرجاع الإجابة الصحيحة على التصميمات المترابطة إذا كانت الحالية
تم تعيين الحزمة (كما في "*ThisPackage:: = *ThatPackage::") [Perl
# 78742].

· إذا تم حذف الحزمة بواسطة الرمز الذي تتصل به، فمن الممكن أن يرى "المتصل" رسالة
إطار مكدس ينتمي إلى تلك الحزمة المحذوفة. يمكن أن يتعطل "المتصل" إذا كان المخبأ
تمت إعادة استخدام عنوان الذاكرة لعددي وتم إجراء استبدال عليه
العددية [بيرل # 113486].

· لم يعد "UNIVERSAL::can" يتعامل مع الوسيطة الأولى بشكل مختلف اعتمادًا على ما إذا كان ذلك أم لا
إنها سلسلة أو رقم داخليًا.

· "فتح" باستخدام "<&" للوضع للتحقق مما إذا كانت الوسيطة الثالثة عبارة عن رقم أم لا
تحديد ما إذا كان سيتم التعامل معه على أنه واصف ملف أو اسم مؤشر. سحري
كانت المتغيرات مثل $1 تفشل دائمًا في التحقق الرقمي ويتم التعامل معها على أنها مقبض
أسماء.

· معالجة "التحذير" للمتغيرات السحرية (1 دولار، ربطات عنق) خضعت لعدة إصلاحات.
يتم استدعاء "FETCH" مرة واحدة فقط الآن في وسيطة مرتبطة أو $@ مرتبطة [Perl #97480]. ربط
لم تعد يتم تجاهل المتغيرات التي تُرجع كائنات تُصنف كـ "" بعد الآن. مقيد $@
الذي حدث لإرجاع مرجع سابق الوقت الذي تم استخدامه لم يعد
تجاهلها.

· "warn """ يتعامل الآن مع $@ الذي يحتوي على رقم بنفس الطريقة، بغض النظر عما إذا كان أم لا
حدث عبر "$@=3" أو "$@="3"". اعتاد أن يتجاهل السابق. الآن يلحق
"\t...تم القبض عليه"، كما حدث دائمًا مع "$@="3"".

· العوامل الرقمية على المتغيرات السحرية (على سبيل المثال، "$1 + 1") تستخدم لاستخدام النقطة العائمة
العمليات حتى عندما تكون العمليات الصحيحة أكثر ملاءمة، مما يؤدي إلى خسارة
الدقة على منصات 64 بت [Perl #109542].

· لم يعد النفي الأحادي يعامل السلسلة كرقم في حالة استخدام السلسلة
كرقم في مرحلة ما. لذلك، إذا كان $x يحتوي على السلسلة "dogs"، فسيتم إرجاع "-$x".
"-dogs" حتى لو حدث "$y=0+$x" في وقت ما.

· في الإصدار 5.14 من لغة Perl، تم إصلاح "-'-10'" ليرجع "10"، وليس "+10". لكن المتغيرات السحرية
لم يتم إصلاح (1 دولار، روابط) حتى الآن [Perl #57706].

· يتعامل النفي الأحادي الآن مع السلاسل بشكل متسق، بغض النظر عن "UTF8" الداخلي.
العلم.

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

· التعبيرات العادية مثل "qr/\87/" تم إدراج حرف NUL بصمت سابقًا، وبالتالي
مطابقة كما لو كانت مكتوبة "qr/\00087/". الآن يتطابق كما لو كان
مكتوب كـ "qr/87/"، مع رسالة تفيد بأن التسلسل "\8" غير معروف.

· "__SUB__" يعمل الآن في كتل خاصة ("البداية"، "النهاية"، وما إلى ذلك).

· يمكن أن يؤدي إنشاء سلسلة المحادثات على نظام التشغيل Windows نظريًا إلى حدوث عطل إذا تم ذلك داخل ملف
كتلة "البدء". لا يزال لا يعمل بشكل صحيح، لكنه لم يعد يتعطل [Perl
# 111610].

· "\&{''}" (مع السلسلة الفارغة) يقوم الآن بتنشيط كعب الروتين تلقائيًا مثل أي اسم فرعي آخر، و
لم يعد ينتج الخطأ "تعذر إنشاء فرعي" [Perl #94476].

· تم إصلاح الانحدار الذي تم تقديمه في الإصدار 5.14.0، والذي فيه بعض الاستدعاءات إلى "إعادة"
الوحدة النمطية ستضرب $_ [Perl #113750].

· "do FILE" الآن إما يقوم دائمًا بتعيين $@ أو مسحه، حتى عندما لا يمكن قراءة الملف. هذا
يضمن أن اختبار $@ أولاً (كما هو موصى به في الوثائق) يُرجع دائمًا ملف
النتيجة الصحيحة.

· تم الآن إعادة تعيين مكرر الصفيف المستخدم في إنشاء "each @array" بشكل صحيح
تم مسح @array [Perl #75596]. يحدث هذا، على سبيل المثال، عندما يكون المصفوفة عمومية
تم تعيينه لـ، كما في "@array = (...)"، ولكن ليس عندما يكون القيم تم تعيينهم ل. في الشروط
لواجهة برمجة تطبيقات XS، فهذا يعني أن "av_clear()" سيقوم الآن بإعادة تعيين المكرِّر.

يعكس هذا سلوك مكرر التجزئة عند مسح التجزئة.

· يقوم الآن "$class->can" و"$class->isa" و"$class->DOES" بإرجاع النتائج الصحيحة،
بغض النظر عما إذا كانت تلك الحزمة المشار إليها بواسطة $class موجودة أم لا [Perl #47113].

· الإشارات القادمة لم تعد واضحة $@ [Perl #45173].

· السماح بإعلانات "my ()" بقائمة متغيرات فارغة [Perl #113554].

· أثناء التحليل، أعلن الغواصات بعد الأخطاء لم تعد تترك بذرة [بيرل #113712].

· عمليات الإغلاق التي لا تحتوي على تقييمات سلسلة لم تعد مرتبطة بالروتينات الفرعية التي تحتوي عليها،
السماح للمتغيرات المغلقة بواسطة الإجراءات الفرعية الخارجية أن يتم تحريرها عندما يكون الجزء الفرعي الخارجي كذلك
تم تحريره، حتى لو كان الفرع الداخلي لا يزال موجودًا [Perl #89544].

· تكرار معالجات الملفات في الذاكرة عن طريق فتحها مع توقف الوضع "<&=" أو ">&="
يعمل بشكل صحيح في v5.16.0. لقد كان يتسبب في أن يشير المقبض الجديد إلى مختلف
متغير عددي. لقد تم إصلاح هذا [بيرل #113764].

· لم تعد تعبيرات "qr//" تتعطل مع محركات التعبير العادية المخصصة التي لا تفعل ذلك
قم بتعيين "offs" في وقت تجميع التعبير العادي [Perl #112962].

· لم يعد "الحذف المحلي" يتعطل مع بعض المصفوفات والتجزئات السحرية [Perl
# 112966].

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

· "العددية (الكتابة)" لم تعد تُرجع عناصر متعددة [بيرل #73690].

· لم تعد تحويلات السلسلة إلى الفاصلة العائمة تخطئ في تحليل سلاسل معينة ضمن "الاستخدام".
الإعدادات المحلية" [بيرل #109318].

· مرشحات @INC التي تموت لم تعد تتسرب من الذاكرة [Perl #92252].

· يتم الآن استدعاء تطبيقات العمليات المحملة بشكل زائد في السياق الصحيح.
وهذا يسمح، من بين أمور أخرى، بالقدرة على تجاوز "<>" [Perl #47119] بشكل صحيح.

· تحديد المفتاح "الاحتياطي" فقط عند استدعاء "الاستخدام الزائد" يعمل الآن بشكل صحيح
[perl # 113010].

· "sub foo { my $a = 0; while ($a) { ... } }" و "sub foo { while (0) { ... } }" الآن
قم بإرجاع نفس الشيء [Perl #73618].

· يتصرف نفي السلسلة الآن بنفس الطريقة ضمن "استخدام عدد صحيح". كما هو الحال بدون [Perl
# 113012].

· يقوم "chr" الآن بإرجاع حرف Unicode البديل (U+FFFD) لـ -1، بغض النظر عن
التمثيل الداخلي . -1 يستخدم للالتفاف إذا كانت الوسيطة مرتبطة أو سلسلة
داخليا.

· قد يؤدي استخدام "تنسيق" بعد تحرير الفرع الفرعي الخاص به إلى التعطل اعتبارًا من إصدار Perl v5.12.0، إذا
يشير التنسيق إلى المتغيرات المعجمية من الجزء الفرعي الخارجي.

· قد يؤدي استخدام "تنسيق" بعد أن كان الجزء الفرعي المرفق به غير محدد إلى التعطل اعتبارًا من إصدار Perl v5.10.0،
إذا كان التنسيق يشير إلى متغيرات معجمية من الجزء الخارجي.

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

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

· لم يعد المحلل اللغوي يشعر بالارتباك، حيث يتعامل مع "eval foo ()" كخطأ في بناء الجملة if
مسبوقة بـ "طباعة"؛ [بيرل #16249].

· لم تعد القيمة المرتجعة لـ "syscall" مقطوعة على الأنظمة الأساسية 64 بت [Perl
# 113980].

· لم يعد الطي المستمر يتسبب في طباعة "print 1 ? FOO : BAR" على مقبض FOO
[perl # 78064].

· يقوم "do subname" الآن باستدعاء الروتين الفرعي المسمى ويستخدم اسم الملف الذي يُرجعه بدلاً من ذلك
لفتح ملف اسمه "الاسم الفرعي".

· تم الآن استخدام الإجراءات الفرعية التي تم البحث عنها بواسطة خطافات فحص rv2cv (المسجلة بواسطة وحدات XS)
في الاعتبار عند تحديد ما إذا كان يجب أن يكون "foo bar" هو المكالمة الفرعية
"foo(bar)" أو استدعاء الأسلوب ""bar"->foo".

· لم يعد "CORE::foo::bar" يعامل بشكل خاص، مما يسمح بإجراء التجاوزات العامة
يتم الاتصال به مباشرةً عبر "CORE::GLOBAL::uc(...)" [Perl #113016].

· يؤدي الآن استدعاء فرعي غير محدد تم تعريف typeglob الخاص به إلى ظهور الإجراء المعتاد
خطأ "تم استدعاء روتين فرعي غير محدد"، بدلاً من "ليس مرجعًا للكود".

· تم إصلاح خللين يتعلقان بـISA. "*ISA = *glob_without_array" و"undef
*هو؛ @{*ISA}" قد يمنع التعديلات المستقبلية على @ISA من تحديث الملف الداخلي
ذاكرات التخزين المؤقت المستخدمة للبحث عن الأساليب. كانت حالة *glob_without_array بمثابة تراجع عن
بيرل v5.12.

· تؤدي تحسينات التعبير العادي أحيانًا إلى فشل ظهور "$" مع "/m" أو
تطابقات غير صحيحة [بيرل #114068].

· يعمل "__SUB__" الآن في كتلة "الفرز" عندما يتم الإعلان مسبقًا عن الروتين الفرعي المتضمن
مع "sub foo؛" بناء الجملة [بيرل #113710].

· تنطبق خصائص Unicode فقط على نقاط رمز Unicode، مما يؤدي إلى بعض التفاصيل الدقيقة
عندما تتم مطابقة التعبيرات العادية مع نقاط كود Unicode المذكورة أعلاه. هناك
تحذير تم إنشاؤه للفت انتباهك إلى هذا. ومع ذلك، كان هذا التحذير يجري
تم إنشاؤها بشكل غير مناسب في بعض الحالات، كما هو الحال عندما يتم تحليل البرنامج.
يجب ألا تؤدي المطابقات التي لا تتوافق مع Unicode مثل "\w" و"[:word:]" إلى إنشاء تحذير، كما هو الحال
تعريفاتها لا تقيدها بالتطبيق على نقاط كود Unicode فقط. الآن
يتم إنشاء الرسالة فقط عند المطابقة مع "\p{}" و"\P{}". يبقى هناك أ
خطأ، [Perl #114148]، للخصائص القليلة جدًا في Unicode التي تتطابق مع خاصية واحدة فقط
نقطة الكود. لا يتم إنشاء التحذير إذا تمت مطابقته مع Unicode أعلاه
نقطة الكود.

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

· قد يتسبب خطأ في مُحسِّن التعبير العادي في ظهور أسطر متعددة "^" بشكل غير صحيح
وجود فواصل أسطر، بحيث لا يتطابق ""/\n\n" =~ m#\A(?:^/$)#im"
[perl # 115242].

· فشل "الشوكة" في سياق القائمة لم يعد يفسد المكدس. "@a = (1، 2، شوكة، 3)"
يستخدم لالتقاط الرقم 2 وتعيين "(1، undef، 3)" في حالة فشل استدعاء "fork".

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

· تعيين تعبير عادي ("${qr//}") إلى متغير يحدث أنه يحتوي على
لم يعد رقم النقطة العائمة يتسبب في فشل التأكيد على إصدارات تصحيح الأخطاء.

· لم يعد تعيين تعبير عادي لعدد يحتوي على رقم يسبب
الترقيم اللاحق لإنتاج أرقام عشوائية.

· لم يعد تعيين تعبير عادي لمتغير سحري يزيل السحر.
وكان هذا تراجعا عن الإصدار 5.10.

· لم يعد تعيين تعبير عادي لعددي مبارك يؤدي إلى حدوث أعطال. هذا
كان أيضًا تراجعًا عن الإصدار 5.10.

· يمكن الآن تخصيص التعبير العادي لعناصر التجزئة والصفيف المرتبطة بالتسطيح
في سلاسل.

· لم يعد تعداد التعبير العادي يؤدي إلى تحذير غير مهيأ.

· لم تعد مؤشرات الصفيف السالبة تتسبب في تجاهل الأساليب الموجودة للمتغيرات المرتبطة.
وكان هذا تراجعا عن الإصدار 5.12.

· لم تعد مؤشرات الصفيف السالبة تؤدي إلى حدوث أعطال في المصفوفات المرتبطة بغير الكائنات.

· لم يعد "$byte_overload .= $utf8" ينتج عنه ترميز مزدوج UTF-8 إذا كان الجانب الأيسر
تصادف أن العددية قد أنتجت سلسلة UTF-8 في آخر مرة تم فيها استدعاء التحميل الزائد.

· "goto &sub" يستخدم الآن القيمة الحالية لـ @_، بدلاً من استخدام المصفوفة
تم استدعاء الروتين الفرعي في الأصل بـ. وهذا يعني "المحلي @_ = (...); goto &sub" الآن
يعمل [بيرل # 43077].

· إذا تم استدعاء مصحح الأخطاء بشكل متكرر، فإنه لم يعد يدوس على المعجم الخاص به
المتغيرات. في السابق، في ظل العودية، كانت جميع المكالمات تشترك في نفس مجموعة المفردات
المتغيرات [بيرل #115742].

· *_{ARRAY} الذي تم إرجاعه من روتين فرعي لم يعد فارغًا تلقائيًا.

· عند استخدام "say" للطباعة إلى مقبض ملف مرتبط، تكون قيمة "$\" صحيحة
مترجمة، حتى لو كان undef سابقا. [بيرل #119927]

معروف مشاكل


· السلاسل التي تحمل علامة UTF8 في %ENV على HP-UX 11.00 بها أخطاء

يعتبر تفاعل السلاسل التي تحمل علامة UTF8 و%ENV على HP-UX 11.00 مراوغًا حاليًا
بعض الطرق التي لم يتم تشخيصها بالكامل بعد. توقع فشل الاختبار في t/op/magic.t، تليها
سلوك غير معروف عند تخزين أحرف واسعة في البيئة.

سجل الوفيات


هوجونج يون (أموريت)، 24 عامًا، من سيول، كوريا الجنوبية، ذهب إلى راحته الطويلة في 8 مايو 2013
مع تمثال لاما وبطاقة TIMTOADY موقعة. لقد كان شابًا رائعًا من فئة بيرل 5 و6
هاكر وعضو مخلص في موقع Korea.pm. لقد برمج بيرل، وتحدث بيرل، وأكل بيرل، و
أحب بيرل. نعتقد أنه لا يزال يبرمج بلغة Perl باستخدام جهاز الكمبيوتر المحمول IBM المعطل
مكان ما. سنشتاق اليه.

شكر وتقدير


يمثل الإصدار 5.18.0 من Perl ما يقرب من 12 شهرًا من التطوير منذ الإصدار 5.16.0 من Perl و
يحتوي على ما يقرب من 400,000 سطر من التغييرات عبر 2,100 ملف من 113 مؤلفًا.

تستمر Perl في الازدهار حتى عقدها الثالث بفضل مجتمع نابض بالحياة من المستخدمين
والمطورين. من المعروف أن الأشخاص التالية أسماؤهم قد ساهموا في تحسين ذلك
أصبح بيرل v5.18.0:

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

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

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

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

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


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

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

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

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


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

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

أوامر لينكس

Ad