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

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

برنامج:

اسم


perl581delta - ما الجديد في Perl v5.8.1

الوصف


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

إذا كنت تقوم بالترقية من إصدار سابق مثل 5.6.1 ، اقرأ أولاً perl58delta ،
الذي يصف الاختلافات بين 5.6.0 و 5.8.0.

في حال كنت تتساءل عن 5.6.1 ، فقد كان إصلاح الأخطاء متطابقًا إلى حد ما مع
إصدار التطوير 5.7.1. مشوش؟ نأمل أن يساعد هذا الجدول الزمني قليلاً: فهو يسرد ملف
الإصدارات الرئيسية الجديدة وإصدارات الصيانة وإصدارات التطوير.

تطوير الصيانة الجديدة

5.6.0 2000 - 22 مارس
5.7.0 2000-02 سبتمبر
5.6.1 2001-أبريل -08
5.7.1 2001-أبريل -09
5.7.2 2001 يوليو 13
5.7.3 2002 - 05 مارس
5.8.0 2002 يوليو 18
5.8.1 2003-25 سبتمبر

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


مزيج العشوائي
نظرًا لأسباب أمنية بشكل أساسي ، تم إجراء "الترتيب العشوائي" للتجزئة أكثر من ذلك
عشوائي. في السابق بينما كان ترتيب عناصر التجزئة من مفاتيح (), القيم ()و كل() وكان
بشكل أساسي ، كان لا يزال قابلاً للتكرار. الآن ، ومع ذلك ، فإن الترتيب يختلف بين
أشواط مختلفة من Perl.

بيرل لديها أبدا مضمون أي وقت تنظيم of ال مزيج مفاتيح، والطلب بالفعل
تغيرت عدة مرات خلال عمر Perl 5. كما أن ترتيب مفاتيح التجزئة تغير
تأثرت دائمًا ، ولا تزال ، بأمر الإدراج.

العشوائية المضافة قد تؤثر على التطبيقات.

أحد السيناريوهات المحتملة هو عندما يتضمن إخراج التطبيق بيانات تجزئة. ل
على سبيل المثال ، إذا كنت قد استخدمت الوحدة النمطية Data :: Dumper لتفريغ البيانات في ملفات مختلفة ، و
ثم قارن الملفات لمعرفة ما إذا كانت البيانات قد تغيرت ، الآن سيكون لديك خطأ
الإيجابيات حيث سيختلف الترتيب الذي يتم به إغراق التجزئة. بشكل عام العلاج هو
رتب المفاتيح (أو القيم) ؛ على وجه الخصوص لـ Data :: Dumper لاستخدام "Sortkeys"
خيار. إذا كان هناك ترتيب معين مهمًا حقًا ، فاستخدم التجزئة المقيدة: على سبيل المثال
وحدة Tie :: IxHash التي تحافظ افتراضيًا على الترتيب الذي كانت به عناصر التجزئة
وأضاف.

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

من المؤكد أن العشوائية العشوائية تكشف عن افتراضات خفية حول بعض المعطيات
ترتيب عناصر التجزئة ، والأخطاء الصريحة: كشفت عن بعض الأخطاء في نواة Perl و
وحدات أساسية.

لتعطيل التوزيع العشوائي للتجزئة في وقت التشغيل ، قم بتعيين متغير البيئة PERL_HASH_SEED
إلى 0 (صفر) قبل تشغيل Perl (لمزيد من المعلومات راجع "PERL_HASH_SEED" في perlrun) ، أو
لتعطيل الميزة تمامًا في وقت الترجمة ، قم بالتجميع باستخدام "-DNO_HASH_SEED" (راجع
تثبيت).

راجع "هجمات التعقيد الحسابي" في perlsec للحصول على الأساس المنطقي وراء ذلك
تغيير.

UTF-8 On مقابض الملفات لا طويل مفعل By مكان
في Perl 5.8.0 ، تم تعيين جميع معالجات الملفات ، بما في ذلك مقابض الملفات القياسية ، ضمنياً على
كن في Unicode UTF-8 إذا أشارت إعدادات اللغة إلى استخدام UTF-8. هذه الميزة
تسببت في العديد من المشكلات ، لذلك تم إيقاف تشغيل الميزة وإعادة تصميمها: راجع "الأساسية
تحسينات ".

رقم واحد سلاسل v . لا يعد سلاسل v قبل "=>"
تم تقديم ميزة سلاسل الإصدار أو سلاسل v (راجع "سلاسل الإصدار" في perldata) في
لقد كان Perl 5.6.0 مصدرًا لبعض الارتباك - خاصةً عندما لا يرغب المستخدم في ذلك
استخدمه ، لكن بيرل اعتقد أنه يعرف أفضل. كانت مزعجة بشكل خاص الميزة التي
قبل "=>" تم تفسير سلسلة إصدار ("v" متبوعة بأرقام) على أنها ملف
v- سلسلة بدلا من سلسلة حرفية. بعبارة أخرى:

٪ ح = (v65 => 42) ؛

يعني منذ Perl 5.6.0

٪ h = ('A' => 42) ؛

(على الأقل في منصات ذرية ASCII) تعيد Perl 5.8.1 أكثر طبيعية
ترجمة

٪ ح = ('v65' => 42) ؛

لا تزال سلاسل v متعددة الأرقام مثل v65.66 و 65.66.67 مستمرة في كونها سلاسل v في Perl
5.8

(نظامي التشغيل Win32) تشتهر أجهزة تركيز الأكسجين البيطرية من كالسـتين بجودتها العالية وفعاليتها في الميدان. -C مفاتيح لديه ايضا معاد استخدامها
تم تغيير رمز التبديل -C بطريقة غير متوافقة. الدلالات القديمة لهذا التبديل فقط
منطقيًا في Win32 وفقط في عالم "use utf8" في إصدارات 5.6.x ، ولا تصنعه
معنى لتطبيق Unicode في 5.8.0. بما أن هذا التبديل لا يمكن استخدامه
من قبل أي شخص ، لقد تم تغيير الغرض منه. السلوك الذي تم تمكينه في رمز التبديل هذا 5.6.x.
قد يتم دعم الإصدارات بطريقة شفافة تعتمد على البيانات في إصدار مستقبلي.

للتعرف على العمر الافتراضي الجديد لهذا المحول ، راجع "لم يعد UTF-8 افتراضيًا ضمن لغات UTF-8" ، و
"-C" في perlrun.

(نظامي التشغيل Win32) تشتهر أجهزة تركيز الأكسجين البيطرية من كالسـتين بجودتها العالية وفعاليتها في الميدان. /d مفاتيح Of CMD.EXE
يستخدم Perl 5.8.1 رمز التبديل / d عند تشغيل قذيفة cmd.exe داخليًا لـ النظام(),
backticks ، وعند فتح الأنابيب للبرامج الخارجية. يقوم المفتاح الإضافي بتعطيل ملف
تنفيذ أوامر التشغيل التلقائي من السجل ، والتي تعتبر بشكل عام غير مرغوب فيها
عند تشغيل البرامج الخارجية. إذا كنت ترغب في الاحتفاظ بالتوافق مع الأقدم
السلوك ، اضبط PERL5SHELL في بيئتك على "cmd / x / c".

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


UTF-8 لا يعد الافتراضي مع UTF-8 محلي
تم تقديم العديد من ميزات Unicode في Perl 5.8.0. تم العثور على واحد منهم ليكون أكثر
الإزعاج من المنفعة: "UTF-8-ification" التلقائي (والصامت) لمقابض الملفات ،
بما في ذلك مقابض الملفات القياسية ، إذا أشارت إعدادات لغة المستخدم إلى استخدام UTF-8.

على سبيل المثال ، إذا كان لديك "en_US.UTF-8" كموقعك المحلي ، فإن STDIN و STDOUT
تم إنشاء "UTF-8" تلقائيًا ، بمعنى آخر ، وضع binmode ضمني (... ، ": utf8"). هذا
يعني أن محاولة الطباعة ، على سبيل المثال ، مركز حقوق الإنسان(0xff) ، انتهى الأمر بطباعة وحدات البايت 0xc3 0xbf. بالكاد
ما يدور في ذهنك ما لم تكن على دراية بهذه الميزة في Perl 5.8.0. المشكلة هي
أن الغالبية العظمى من الأشخاص لم يكونوا كذلك: على سبيل المثال في الإصدارين 8 و 9 من RedHat
الافتراضي الإعداد المحلي هو UTF-8 ، لذلك حصل جميع مستخدمي RedHat على معالجات ملفات UTF-8 ، سواء كانوا
أراد ذلك أم لا. تم تكثيف الألم من خلال تطبيق Unicode لـ Perl 5.8.0
(لا يزال) يعاني من أخطاء سيئة ، خاصة فيما يتعلق باستخدام s /// و tr ///. (البق أن
تم إصلاحه في 5.8.1)

لذلك تم اتخاذ قرار بالتراجع عن السمة وتغييرها من الصمت الضمني
الافتراضي إلى خيار واعي صريح. خيار سطر أوامر Perl الجديد "-C" وخياره
يمكن الآن استخدام متغير البيئة المقابل PERL_UNICODE للتحكم في كيفية استخدام Perl و
يتفاعل Unicode في واجهات مثل I / O وعلى سبيل المثال وسائط سطر الأوامر. يرى
"-C" في perlrun و "PERL_UNICODE" في perlrun لمزيد من المعلومات.

غير مأمون إشارات مرة أخرى متاح
في Perl 5.8.0 تم تقديم ما يسمى بـ "الإشارات الآمنة". هذا يعني أن Perl no
أطول يتعامل مع الإشارات على الفور ولكن بدلاً من ذلك "بين أكواد التشغيل" ، عندما يكون ذلك آمنًا
لذا. قد يؤدي التعامل الفوري المبكر بسهولة إلى إفساد الحالة الداخلية لـ Perl ،
مما أدى إلى حوادث غامضة.

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

لذلك يقدم perl 5.8.1 "بابًا خلفيًا" لاستعادة ما قبل 5.8.0 (ما قبل 5.7.3 ، حقًا)
سلوك الإشارة. فقط اضبط متغير البيئة PERL_SIGNALS على "غير آمن" ، والمتغير القديم
عودة سلوك معالجة الإشارات الفورية (وغير الآمنة). راجع "PERL_SIGNALS" في perlrun
و "الإشارات المؤجلة (الإشارات الآمنة)" في perlipc.

في الأخبار غير ذات الصلة تمامًا ، يمكنك الآن استخدام الإشارات الآمنة مع POSIX :: SigAction. يرى
"POSIX :: SigAction" في POSIX.

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

محلي $ {$ x}
التركيب

محلي $ {$ x}
محلي @ {$ x}
٪ {$ x} محلي

الآن قم بترجمة المتغيرات ، بالنظر إلى أن $ x هو اسم متغير صالح.

يونيكود حرف قاعدة البيانات 4.0.0
تم تحديث نسخة قاعدة بيانات أحرف Unicode المضمنة في Perl 5.8 إلى 4.0.0
من 3.2.0. هذا يعني على سبيل المثال أن خصائص أحرف Unicode هي كما في
يونيكود 4.0.0.

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

(تذكير) تجزئة زائفة . إهمال (هل حقا)

تم إهمال التجزئة الزائفة في Perl 5.8.0 وستتم إزالتها في Perl 5.10.0 ، راجع
perl58delta للحصول على التفاصيل. كل محاولة للوصول إلى تجزئات زائفة ستطلق التحذير
"تم إهمال التجزئات الزائفة". إذا كنت تريد حقًا الاستمرار في استخدام التجزئات الزائفة ولكن
كي لا ترى تحذيرات الإيقاف ، استخدم:

لا توجد تحذيرات "مهملة" ؛

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

(تذكير) على غرار 5.005 المواضيع . إهمال (هل حقا)

تم إهمال مؤشرات الترابط ذات النمط 5.005 (تم تنشيطها بواسطة "استخدام Thread؛") في Perl 5.8.0 وستكون
تمت إزالته بعد Perl 5.8 ، راجع perl58delta للحصول على التفاصيل. كل إنشاء موضوع على غرار 5.005
سيتم تشغيل التحذير "تم إهمال 5.005 مؤشرات ترابط". إذا كنت تريد الاستمرار حقًا
باستخدام مؤشرات الترابط 5.005 ولكن لا ترى تحذيرات الإهمال ، استخدم:

لا توجد تحذيرات "مهملة" ؛

(تذكير) تشتهر أجهزة تركيز الأكسجين البيطرية من كالسـتين بجودتها العالية وفعاليتها في الميدان. $* متغير is إهمال (هل حقا)

تم إهمال المطابقة متعددة الأسطر المتغيرة التي تتحكم في $ * وستتم إزالتها
بعد 5.8. تم إهمال المتغير لفترة طويلة وتحذير من الإيقاف
تم تحديد "تم إهمال استخدام $ *" ، والآن ستتم إزالة المتغير أخيرًا. ال
تم استبدال الوظيفة بمعدلات "/ s" و "/ m" في مطابقة النمط. لو
تريد حقًا الاستمرار في استخدام المتغير $ * - ولكن لا تريد رؤية تحذيرات الإيقاف ،
استعمال:

لا توجد تحذيرات "مهملة" ؛

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

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

يقوم PerlIO :: get_layers (FH) بإرجاع أسماء طبقات PerlIO النشطة على مقبض ملف.

يمكن أن تحتوي PerlIO :: via Layers الآن على طريقة UTF8 اختيارية للإشارة إلى ما إذا كانت الطبقة أم لا
يريد "auto-: utf8" الدفق.

utf8 :: is_utf8 () تمت إضافته كطريقة سريعة لاختبار ما إذا كان العدد القياسي مشفرًا أم لا
داخليًا بتنسيق UTF-8 (Unicode).

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


تحديث الأقسام و براغماتا
تم تحديث الوحدات النمطية والبراجماتية التالية منذ Perl 5.8.0:

قاعدة
ب :: بايت كود
في شكل أفضل بكثير مما كانت عليه من قبل. لا يزال بعيدًا عن الكمال ، ولكن ربما يستحق
محاولة.

ب :: موجزة
ب :: Deparse
مؤشر
ميزة اختيارية ، ": hireswallclock" ، تسمح الآن بساعة حائط عالية الدقة
مرات (يستخدم Time :: HiRes).

بايت لودر
انظر B :: Bytecode.

بايت
الآن به بايت :: substr.

CGI
ألقاب
يمكن للمرء الآن أن يكون لديه أسماء مستعارة لأسماء الأحرف المخصصة.

CPAN
يوجد الآن سطر أوامر بسيط للواجهة الأمامية لوحدة CPAN.pm تسمى com.cpan.

البيانات :: شاحنة قلابة
يسمح خيار جديد ، زوج ، باختيار الفاصل بين مفاتيح التجزئة والقيم.

DB_File
تطوير :: PPPort
خلاصة :: MD5
ترميز
تحديثات مهمة على وظيفة تشفير pragma (tr /// و DATA
ملف ، تنسيقات).

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

تم تصحيح جدول التحويل ISO 8859-6 (تم تعيين 0x30..0x39 بشكل خاطئ
إلى U + 0660..U + 0669 ، بدلاً من U + 0030..U + 0039). لم يحدث تحويل GSM 03.38
معالجة تسلسل الهروب بشكل صحيح. تمت إضافة ترميز UTF-7 (مما يجعل Encode
ميزة كاملة مع Unicode :: String).

الحقول
ليبنت
الرياضيات :: BigInt
تم إصلاح الكثير من الأخطاء منذ الإصدار 1.60 ، وهو الإصدار المضمن في Perl v5.8.0.
وتجدر الإشارة بشكل خاص إلى الخطأ الموجود في Calc الذي تسبب في فشل div و mod للبعض
القيم الكبيرة ، وإصلاحات التعامل مع المدخلات السيئة.

تمت إضافة بعض الميزات الجديدة ، على سبيل المثال بروت () الطريقة ، يمكنك الآن تمرير المعلمات إلى
التكوين () لتغيير بعض الإعدادات في وقت التشغيل ، ومن الممكن الآن حجز ملف
إنشاء NaN واللانهاية.

كالعادة ، تم إجراء بعض التحسينات وجعلت الرياضيات بشكل عام أسرع قليلاً. في
في بعض الحالات ، أسرع كثيرًا في الواقع. مكتبات بديلة خاصة مثل
Math :: BigInt :: GMP تستفيد من هذا. بالإضافة إلى ذلك ، هناك الكثير من الإجراءات غير التقليدية
مثل fsqrt () و جلد() الآن أسرع بكثير.

التمثيل الصامت :: Base64
NEXT
وراثة الماس تعمل الآن.

الصافي :: بينغ
PerlIO :: عددي
القراءة من الحجميات غير السلاسل (مثل المتغيرات الخاصة ، انظر بيرلفار) تعمل الآن.

podlators
بود :: LaTeX
PodParsers
بود :: Perldoc
إعادة كتابة كاملة. كأثر جانبي ، لم يعد يرفض بدء التشغيل عند تشغيله بواسطة الجذر.

عددي :: Util
أدوات مساعدة جديدة: refaddr ، isvstring ، look_like_number ، set_prototype.

قابل للتخزين
يمكن الآن تخزين مراجع الكود (عبر B :: Deparse ، لذلك ليس مضمونًا).

صارم
الإصدارات السابقة من البراغما الصارمة لم تتحقق من المعلمات التي تم تمريرها ضمنيًا
إلى روتين "الاستيراد" (الاستخدام) و "عدم الاستيراد". تسبب هذا في المصطلح الخاطئ مثل
على النحو التالي:

استخدام صارم qw (ISA) ؛
ISA = qw (Foo) ؛

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

بدءًا من Perl 5.8.1 أعلاه سوف يسبب خطأ ليتم رفعه. هذا قد يسبب
البرامج التي اعتادت التنفيذ على ما يبدو بشكل صحيح دون فشل التحذيرات والأخطاء
عندما تعمل تحت 5.8.1. يحدث هذا بسبب

استخدام صارم qw (ISA) ؛

سوف تفشل الآن مع الخطأ:

علامة (علامات) "صارمة" غير معروفة "ISA"

علاج هذه المشكلة هو استبدال هذا الرمز بالمصطلح الصحيح:

استخدام صارم
استخدم vars qw (ISA) ؛
ISA = qw (Foo) ؛

المصطلح :: ANSIcolor
اختبار السرج
الآن أصبح من الصعب إرضاءه بشأن الإخراج الإضافي أو المفقود من نصوص الاختبار.

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

المواضيع
عدة إصلاحات ، على سبيل المثال انضم() مشاكل وتسريبات في الذاكرة. في بعض المنصات
(مثل Linux) التي تستخدم glibc كان الحد الأدنى من مساحة الذاكرة لمؤشر واحد
خفضت بمئات الكيلو بايت.

المواضيع :: المشتركة
تم إصلاح العديد من حالات تسريب الذاكرة.

يونيكود :: ترتيب
يونيكود :: تطبيع
Win32 :: GetFolderPath
Win32 :: GetOSVersion
يعود الآن معلومات إضافية.

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


تنتج الأداة المساعدة "h2xs" الآن تنسيقًا أكثر حداثة: Foo-Bar / lib / Foo / Bar.pm بدلا من
فو / بار / بار. أيضا ، اختبار المتداول يسمى الآن ر / فو بار بدلا من ر / 1.t.

مصحح أخطاء Perl (ليب / perl5db.pl) تم توثيقه على نطاق واسع وتم العثور على أخطاء
بينما تم إصلاح التوثيق.

تمت إعادة كتابة "perldoc" من البداية ليكون أكثر قوة وثراءً بالميزات.

يعمل "perlcc -B" الآن بشكل أفضل إلى حد ما على الأقل ، بينما "perlcc -c" أكثر تعطلاً.
(لا تزال مجموعة مترجم Perl ككل تجريبية.)

جديد توثيق


تمت إضافة perl573delta لسرد الاختلافات بين (التي عفا عليها الزمن الآن)
إصدارات التنمية 5.7.2 و 5.7.3.

تمت إضافة perl58delta: إنها perldelta لـ 5.8.0 ، مع تفصيل الاختلافات
بين شنومكس و شنومكس.

تمت إضافة perlartistic: هو الترخيص الفني بتنسيق pod ، مما يجعله أسهل
للوحدات النمطية للإشارة إليها.

تمت إضافة perlcheat: إنها ورقة غش Perl.

تمت إضافة perlgpl: إنها رخصة جنو العمومية العامة بصيغة pod ، مما يجعلها
يسهل على الوحدات الرجوع إليها.

تمت إضافة perlmacosx للتحدث عن تثبيت واستخدام Perl في نظام التشغيل Mac OS X.

تمت إضافة perlos400 للتحدث عن تثبيت واستخدام Perl في OS / 400 PASE.

تمت إضافة perlreref: إنه مرجع سريع للتعبيرات العادية.

التثبيت و الاعداد إدخال التحسينات


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

يمكن للمرء الآن تحديد أدلة التثبيت للموقع والمورد وصفحات HTML ، و
نصوص الموقع والمورد. يرى تثبيت.

يمكن للمرء الآن تحديد دليل وجهة لتثبيت Perl عن طريق تحديد
متغير DESTDIR لـ "make install". (تختلف هذه الميزة قليلاً عن
السابق "تكوين -Dinstallprefix = ...".) راجع تثبيت.

قدمت الإصدارات 3.x من دول مجلس التعاون الخليجي تحذيرًا جديدًا تسبب في حدوث الكثير من الضوضاء أثناء Perl
تجميع: "gcc -Ialreadyknowndirectory (تحذير: تغيير ترتيب البحث)". هذا التحذير
تم الآن تجنبها عن طريق تكوين إزالة مثل هذه الدلائل قبل التجميع.

يمكن للمرء الآن إنشاء مجموعات فرعية من الوحدات النمطية الأساسية لـ Perl باستخدام علامات التكوين
"-Dnoextensions = ..." و "-Donlyextensions = ..." ، راجع تثبيت.

منصة خاصة التحسينات
في Cygwin Perl يمكن الآن بناؤها باستخدام خيوط ("تكوين -Duseithreads"). هذا يعمل مع
كلا من Cygwin 1.3.22 و Cygwin 1.5.3.

في إصدارات FreeBSD الأحدث ، فشل تجميع Perl 5.8.0 بسبب محاولة استخدام مالوك,
وهو في FreeBSD مجرد ملف وهمي ، وخطأ فادح حتى محاولة استخدامه. الآن مالوك
هو ليس مستخدما.

ومن المعروف الآن أن Perl يبني أيضًا في Hitachi HI-UXMPP.

من المعروف الآن أن Perl تقوم بالبناء مرة أخرى في LynxOS.

يتم الآن تثبيت Mac OS X برقم إصدار Perl مضمن في أسماء دليل التثبيت
لتسهيل ترقية لغة Perl المترجمة بواسطة المستخدم ، وأدلة التثبيت بشكل عام
هي معيار أكثر. بمعنى آخر ، لم يعد التثبيت الافتراضي يكسر Apple-
قدمت بيرل. من ناحية أخرى ، مع "Configure -Dprefix =/ البيرة"يمكنك الآن حقًا
استبدل لغة Perl المقدمة من Apple (من فضلك be حذر).

يقوم نظام التشغيل Mac OS X الآن ببناء Perl بشكل ثابت افتراضيًا. تم إجراء هذا التغيير بشكل أساسي بشكل أسرع
أوقات بدء التشغيل. لا تزال لغة Perl المقدمة من Apple مرتبطة ومشتركة ديناميكيًا ، وأنت
يمكن تمكين المشاركة لبناءات Perl الخاصة بك عن طريق "Configure -Duseshrplib".

تم نقل Perl إلى بيئة نظام التشغيل OS / 400 PASE الخاصة بشركة IBM. أفضل طريقة لبناء لغة Perl لـ
PASE هو استخدام مضيف AIX كبيئة ترجمة مشتركة. انظر README.os400.

تمت إضافة خيار تجميع متقاطع آخر: الآن تعتمد Perl على OpenZaurus ، وهو ملف
توزيع Linux على أساس Mandrake + Embedix لجهاز Sharp Zaurus PDA. انظر
عبر / README ملف.

Tru64 عند استخدام gcc 3 يسقط التحسين لـ toke.c إلى "-O2" بسبب العملاق
استخدام الذاكرة مع الافتراضي "-O3".

يمكن لـ Tru64 الآن بناء Perl باستخدام قواعد بيانات Berkeley DB الأحدث.

لقد تم تحسين بناء لغة Perl على نظام WinCE كثيرًا ، انظر التمهيدي.ce و اقرأني.

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


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

عام إصلاحات
إذا تم وضع علامة على مقبض ملف الإدخال ": utf8" ورأى بيرل أن UTF-8 غير قانوني يأتي عند القيام بذلك
" "، إذا تم تمكين التحذيرات ، فسيتم إرسال تحذير على الفور - بدلاً من الصمت
حول هذا الموضوع وبيرل غير سعيد بشأن البيانات المعطلة لاحقًا. (طبقة ": encoding (utf8)"
يعمل بنفس الطريقة.)

يعمل binmode (SOCKET، ": utf8") فقط على جانب الإدخال ، وليس على جانب الإخراج من
قابس كهرباء. الآن يعمل في كلا الاتجاهين.

بالنسبة إلى Perls المترابطة ، بعض وظائف قاعدة بيانات النظام مثل getpwent () و getgrent () الآن
زيادة المخزن المؤقت لنتائجهم ديناميكيًا ، بدلاً من الفشل. هذا يعني أنه في المواقع ذات
الكثير من المستخدمين والمجموعات لم تعد الوظائف تفشل من خلال إرجاع نتائج جزئية فقط.

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

في 5.8.0 هذا

$ some_unicode. = ؛

لم يعمل بشكل صحيح ولكن بدلاً من ذلك أفسد البيانات. هذا قد تم اصلاحه.

قد تتمكن الطرق المقيدة مثل FETCH وما إلى ذلك الآن من الوصول بأمان إلى القيم المربوطة ، أي ينتج عنها أ
استدعاء متكرر لجلب وما إلى ذلك. تذكر كسر العودية ، بالرغم من ذلك.

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

قد تكون الأعداد الخطية في نصوص Perl الآن أكبر من 65536 ، أو 2 ** 16. (نصوص Perl لها
كانت دائمًا قادرة على أن تكون أكبر من ذلك ، إنها مجرد رقم كتلي للأخطاء المبلغ عنها
والتحذيرات "ملتفة".) بينما تشير النصوص البرمجية بهذا الحجم عادةً إلى الحاجة إلى ذلك
أعد التفكير في الكود الخاص بك قليلاً ، مثل نصوص Perl موجودة بالفعل ، على سبيل المثال كنتائج من الإنشاء
شفرة. الآن يمكن أن تصل الأعداد الكتانية إلى 4294967296 ، أو 2 ** 32.

منصة خاصة إصلاحات
لينكس

· تعيين $ 0 يعمل مرة أخرى (مع بعض القيود التي لا تستطيع Perl أن تفعل الكثير حيالها: see
"$ 0" في بيرلفار)

HP-UX

· تعيين $ 0 يعمل الآن.

VMS

· يختبر التكوين الآن وجود "Poll ()" ، ويستخدم IO :: Poll الآن الامتداد
الوظيفة التي يوفرها البائع إذا تم اكتشافها.

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

· تم رفع حد الطول للقيم (وليس المفاتيح) في تجزئة٪ ENV من 255 بايت
إلى 32640 بايت (إلا عندما يتجاوز إعداد PERL_ENV_TABLES الاستخدام الافتراضي لـ
أسماء منطقية لـ٪ ENV). إذا كان من الضروري الوصول إلى هذه القيم الطويلة من الخارج
Perl ، اعلم أنه يتم تنفيذها باستخدام الأسماء المنطقية لقائمة البحث التي تخزن
القيمة بالقطع ، كل قطعة 255 بايت (حتى 128 قطعة) تكون عنصرًا في ملف
قائمة البحث. عند إجراء بحث في٪ ENV من داخل Perl ، يتم دمج العناصر
في قيمة واحدة. القدرة الحالية الخاصة بـ VMS للوصول إلى العناصر الفردية
للاسم المنطقي لقائمة البحث عبر بناء جملة $ ENV {'foo؛ N'} (حيث N هي قائمة البحث
index) غير معطوب.

· يستخدم تنفيذ الأنابيب الآن رموز DCL المحلية بدلاً من الرموز العالمية
عملية الاتصال.

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

Win32

· تسرب ذاكرة في فرع() تم إصلاح مضاهاة.

· القيمة المعادة لملف ioctl () تم كسر الوظيفة المضمنة عن طريق الخطأ في 5.8.0.
تم تصحيح هذا.

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

الأنابيب والمآخذ هي الآن تلقائيا في الوضع الثنائي.

· النموذج الرباعي الحجج من تحديد() لم يحفظ $! (يخطئ) بشكل صحيح عندما يكون هناك
كانت أخطاء في الاستدعاء الأساسي. تم إصلاح هذا الآن.

· تم إصلاح مشكلة "CR CR LF" ، أصبح binmode (FH ، ": crlf") الآن فعالاً
لا المرجع.

جديد or تغير التشخيص


كل التحذيرات المتعلقة ب علية() و أفرغ() كانت أكثر إفادة واتساقًا.

تغير "A خيط خرجت في حين %d المواضيع كان جري"
النسخة القديمة

تم إنهاء مؤشر ترابط أثناء استمرار تشغيل٪ d من مؤشرات الترابط

كان مضللاً لأن "الآخر" يتضمن أيضًا الخيط الذي يعطي التحذير.

إزالة "محاولة إلى واضح a مقيد التجزئة "
ليس من غير القانوني مسح تجزئة مقيدة ، لذلك تمت إزالة التحذير.

جديد "غير قانوني إعلان of مجهول روتين فرعي "
يجب تحديد كتلة التعليمات البرمجية لـ "sub".

تغير "غير صالح نطاق "٪س" in حرفي المشغل أو العامل"
النسخة القديمة

نطاق [] غير صالح "٪ s" في عامل التحويل الصوتي

كان خطأً ببساطة لأنه لا توجد "[] نطاقات" في tr ///.

جديد "مفتقد مراقبة دبابة الاسم in \ ج "
لا تحتاج إلى شرح.

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

جديد "ممكن الأولوية مشكلة on المختصة بالبت %c المشغل أو العامل"
إذا كنت تعتقد هذا

$ x & $ y == 0

يختبر ما إذا كانت قيمة AND على مستوى البت لـ $ x و $ y تساوي صفرًا ، فسوف يعجبك هذا التحذير.

جديد "تجزئات زائفة . إهمال"
يجب أن يكون هذا التحذير موجودًا بالفعل في 5.8.0 ، نظرًا لأنهم كذلك.

جديد "اقرأ() on %s مقبض الملف ٪س"
لا يمكنك اقرأ() (أو قراءة النظام ()) من مقبض ملف مغلق أو غير مفتوح.

جديد "5.005 المواضيع . إهمال"
يجب أن يكون هذا التحذير موجودًا بالفعل في 5.8.0 ، نظرًا لأنهم كذلك.

جديد "ربط متغير حررت في حين لا يزال in يستخدم"
شيء ما سحب القابس على متغير مقيد حي ، تلعب Perl بأمان من خلال الإنقاذ.

جديد "إلى٪ s: غير شرعي رسم الخرائط '٪س'"
تم تحديد مخطط حالة Unicode غير قانوني معرّف من قبل المستخدم.

جديد "يستخدم of حررت قيمنا in تكرار"
شيء ما عدل القيم التي يتم تكرارها. هذا ليس جيدا.

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


هذه الأخبار تهمك فقط إذا كنت تكتب كود XS أو تريد أن تعرف عنه أو تخترقه
Perl internals (باستخدام Devel :: Peek أو أي عدد من الوحدات النمطية "B ::") ، أو ترغب في تشغيل Perl
مع خيار "-D".

تمت مراجعة أمثلة تضمين perlembed لتكون محدثة ومتسقة:
على سبيل المثال ، الاستخدام الصحيح لـ PERL_SYS_INIT3 () و PERL_SYS_TERM ().

تم إجراء إعادة صياغة واسعة النطاق لرمز اللوحة (الكود المسؤول عن المتغيرات المعجمية)
أجراه ديف ميتشل.

عمل مكثف على الأوتار v لجون بيكوك.

ذاكرة التخزين المؤقت لطول وموضع UTF-8: لتسريع معالجة أحجام Unicode (UTF-8) ،
تم إدخال ذاكرة التخزين المؤقت. توجد مشاكل محتملة إذا تجاوز الامتداد واجهات برمجة التطبيقات الرسمية
ويقوم بتعديل PV الخاص بـ SV بشكل مباشر: لا يتم مسح ذاكرة التخزين المؤقت UTF-8 كما ينبغي.

واجهات برمجة التطبيقات التي عفا عليها الزمن في Perl 5.8.0 ، مثل sv_2pv ، sv_catpvn ، sv_catsv ، sv_setsv ، عادت مرة أخرى
متاح.

لم تعد بعض واجهات برمجة تطبيقات Perl core C مثل cxinc و regatom متاحة على الإطلاق للتعليمات البرمجية
خارج جوهر Perl من امتدادات نواة Perl. هذا متعمد. هم لن
يجب أن يكون متاحًا بأسماء أقصر ، وإذا كان التطبيق يعتمد عليها ،
يجب أن (تخجل و) تتصل بـ perl5-porters لمناقشة ما هي واجهات برمجة التطبيقات المناسبة.

لم تعد بعض واجهات برمجة تطبيقات Perl core C مثل "Perl_list" متاحة بدون "Perl_"
بادئة. إذا توقفت وحدة XS عن العمل بسبب تعذر العثور على بعض الوظائف ، في كثير من الأحيان
الحالات ، الإصلاح البسيط هو إضافة البادئة "Perl_" إلى الوظيفة وسياق الموضوع
"aTHX_" كالوسيطة الأولى لاستدعاء الوظيفة. هذا أيضًا ما يجب أن يحدث دائمًا
تم القيام به: ترك أشكال Perl_-less تتسرب من اللب كان حادثًا. ل
التضمين الأنظف يمكنك أيضًا فرض هذا لجميع واجهات برمجة التطبيقات عن طريق تحديد وقت التجميع cpp
حدد PERL_NO_SHORT_NAMES.

Perl_save_bool () تمت إضافة.

تحتوي كائنات Regexp (تلك التي تم إنشاؤها باستخدام "qr") الآن على S-magic بدلاً من R-magic. هذا ثابت
regexps بالنموذج /...(؟؟{...؛$x})/ لعدم تجاهل التغييرات التي تم إجراؤها على $ x. السحر الاس
يتجنب إسقاط تحسين التخزين المؤقت وجعل (؟؟ {...}) أبنية بطيئة بشكل فاحش
(وبالتالي غير مجدية). راجع أيضًا "المتغيرات السحرية" في perlguts. Regexp :: كان النسخ
تتأثر بهذا التغيير.

وحدات الماكرو الداخلية لتصحيح الأخطاء في Perl DEBUG () و DEB () تمت إعادة تسميته إلى PERL_DEBUG () و
PERL_DEB () لتجنب تعارض مع مساحة الاسم.

تمت إزالة "-DL" (تم كسر leaktest وغير مدعوم لسنوات ، استخدم البديل
تصحيح أخطاء mallocs أو أدوات مثل valgrind و Purify).

تمت إضافة المعدل المطول "v" لـ "-DXv" و "-Dsv" ، انظر perlrun.

جديد اختبارات


في Perl 5.8.0 كان هناك حوالي 69000 اختبار منفصل في حوالي 700 ملف اختبار ، في Perl 5.8.1
يوجد حوالي 77000 اختبار منفصل في حوالي 780 ملف اختبار. تعتمد الأرقام الدقيقة على
تكوين Perl وعلى منصة نظام التشغيل.

معروف مشاكل


إن التوزيع العشوائي للتجزئة المذكور في "التغييرات غير المتوافقة" يمثل مشكلة بالتأكيد: إنه
سوف يوقظ البق النائم ويخرج الافتراضات السيئة.

إذا كنت تريد استخدام mod_perl 2.x مع Perl 5.8.1 ، فستحتاج إلى mod_perl-1.99_10 أو أعلى.
لا تعمل الإصدارات السابقة من mod_perl 2.x مع التجزئات العشوائية. (mod_perl 1.x
يعمل بشكل جيد.) ستحتاج أيضًا إلى Apache :: Test 1.04 أو أعلى.

تمتلك العديد من الأنظمة الأساسية النادرة التي عملت بنسبة 100٪ أو قريبة جدًا منها مع perl 5.8.0
تُركت قليلاً دون رعاية نظرًا لأن المشرفين عليها كانوا مشغولين مؤخرًا ،
وبالتالي سيكون هناك المزيد من الإخفاقات على تلك المنصات. وتشمل هذه المنصات ماك
OS Classic و IBM z / OS (ومنصات EBCDIC الأخرى) و NetWare. لغة Perl الأكثر شيوعًا
تحتوي الأنظمة الأساسية (مثل Unix و Unix ، ومنصات Microsoft ، و VMS) على عدد كافٍ من الاختبارات و
السكان الخبراء أنهم يقومون بعمل جيد.

مربوط تجزئات in العددية سياق الكلام
لا تُرجع التجزئة المربوطة حاليًا أي شيء مفيد في السياق العددي ، على سبيل المثال متى
تستخدم كاختبارات منطقية:

إذا (٪ tied_hash) {...}

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

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

الصافي :: بينغ 450_الخدمة و 510_ping_udp الفشل
الاختبارات الفرعية 9 و 18 من lib / Net / Ping / t / 450_service.t ، والمختبر الفرعي 2 من
قد يفشل lib / Net / Ping / t / 510_ping_udp.t إذا كان لديك إعداد شبكة غير عادي. ل
على سبيل المثال في الحالة الأخيرة ، يحاول الاختبار إرسال اختبار اتصال UDP إلى عنوان IP
127.0.0.1

قبل الميلاد
B :: C (الواجهة الأمامية هي "perlcc -c") أكثر من ذلك.
كسر مما كان عليه من قبل بسبب التغييرات المتغيرة المعجمية الشاملة. (الصالح
الأخبار هي أن B :: Bytecode و ByteLoader أفضل مما كانت عليه من قبل.)

الانطلاق محددة مشاكل


EBCDIC بلاتفورم
لا يزال نظام IBM z / OS وأنظمة EBCDIC الأخرى يمثل مشكلة فيما يتعلق بدعم Unicode.
يتم تخطي العديد من اختبارات Unicode عندما يجب إصلاحها بالفعل.

سيغوين 1.5 مشاكل
في Cygwin 1.5 io / أخبر و المرجع / sysio الاختبارات بها إخفاقات لسبب غير معروف حتى الآن.
في 1.5.5 ، تفشل اختبارات سلاسل الإجهاد ، وضغط الإجهاد ، وسلسلة الإجهاد ما لم يفشل
تم تعيين متغير البيئة PERLIO على "perlio" (مما يجعل أيضًا فشل io / tell الفشل
بعيد).

لا تبني Perl 5.8.1 وتعمل بشكل جيد مع Cygwin 1.3: مع (uname -a) "CYGWIN_NT-5.0 ...
1.3.22 (0.78 / 3/2) 2003-03-18 09:20 i686 ... تم تحقيق "اختبار أصلي" بنسبة 100٪ باستخدام
"تكوين -des -Duseithreads".

اتش بي-UX: HP cc تحذيرات عن الصابون إرسال ملف و المرسل
مع بعض إصدارات مترجم HP C (مثل B.11.11.02) ، ستحصل على العديد من التحذيرات مثل هذا
(خطوط ملفوفة لتسهيل القراءة):

نسخة إلى: "/usr/include/sys/socket.h" ، السطر 504: تحذير 562:
إعادة تعريف "sendfile" باستخدام محدد فئة تخزين مختلف:
"sendfile" سيكون له ارتباط داخلي.
نسخة إلى: "/usr/include/sys/socket.h" ، السطر 505: تحذير 562:
إعادة تعريف "sendpath" باستخدام محدد فئة تخزين مختلف:
سيكون لـ "sendpath" ارتباط داخلي.

تظهر التحذيرات أثناء إنشاء لغة Perl وأثناء اختبارات lib / ExtUtils معينة
التي تستدعي مترجم لغة سي. ومع ذلك ، فإن التحذير ليس خطيرًا ويمكن تجاهله.

إيريكس: t / uni / tr_7jis.t على نحو زائف الفشل
من المعروف أن اختبار t / uni / tr_7jis.t يُبلغ عن الفشل ضمن "إجراء الاختبار" أو تسخير الاختبار
مع إصدارات معينة من IRIX (على الأقل IRIX 6.5 و MIPSpro Compilers الإصدار 7.3.1.1m) ،
ولكن إذا تم إجراء الاختبار يدويًا ، فسيتم اجتياز الاختبار بالكامل.

ماك OS X: لا com.usemymalloc
لا يعمل Perl malloc ("-Dusemymalloc") على الإطلاق في نظام التشغيل Mac OS X. هذا ليس كذلك
جاد ، على الرغم من ذلك ، لأن malloc الأصلي يعمل بشكل جيد.

ترو64: لا مترابطة يبني مع جنو cc (مجلس التعاون الخليجي)
في أحدث إصدارات Tru64 (على سبيل المثال v5.1B أو أحدث) ، لا يمكن استخدام gcc لتجميع ملف
بيرل (-Duseithreads) الخيوط لأن النظام " "الملف لا يعرف عنه
مجلس التعاون الخليجي.

Win32: sysopen ، قراءة النظام ، sywrite
اعتبارًا من الإصدار 5.8.0 ، sysopen ()/قراءة النظام ()/syswrite () لا تتصرف كما اعتادوا
5.6.1 وما قبله فيما يتعلق بوضع "النص". تعمل هذه العناصر المدمجة الآن دائمًا في
الوضع "الثنائي" (حتى لو sysopen () تم تمرير علامة O_TEXT ، أو إذا binmode () تم استخدامه في
مقبض الملف). لاحظ أن هذه المشكلة يجب أن تحدث فرقًا فقط لملفات القرص ، مثل
كانت المقابس والأنابيب دائمًا في الوضع "الثنائي" في منفذ Windows. مثل هذا السلوك
يعتبر حاليًا خطأً ، وقد يتم إعادة تقديم السلوك المتوافق في المستقبل
يطلق. حتى ذلك الحين ، فإن استخدام sysopen (), قراءة النظام () و syswrite () غير مدعوم لـ
عمليات وضع "النص".

Future طريقة الإستخدام


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

· ستصبح PerlIO هي الافتراضي. حاليا (في Perl 5.8.x) مكتبة stdio لا تزال
تستخدم إذا اعتقدت Perl أنها تستطيع استخدام حيل معينة لجعل stdio يذهب في الحقيقة سريع. ل
الإصدارات المستقبلية هدفنا هو جعل PerlIO يعمل بشكل أسرع.

ميزة جديدة تسمى تأكيدات ستكون متاحة. هذا يعني أنه يمكن للمرء أن يكون لديه رمز
تسمى التأكيدات التي تم رشها في الكود: عادةً ما يتم تحسينها بعيدًا ، لكن يمكنهم ذلك
مع خيار "-A".

· سيتوفر عامل تشغيل جديد "//" (محدد أو). هذا يعني أن المرء سيكون قادرًا
ليقول

$ a // $ b

بدلا من

تعريف $ أ؟ $ أ: $ ب

و

$ c // = $ d ؛

بدلا من

$ c = $ d ما لم يتم تعريف $ c ؛

عامل التشغيل سيكون له نفس الأسبقية والترابط مثل "||". شفرة المصدر
التصحيح مقابل مصادر Perl 5.8.1 ستكون متاحة في CPAN مثل
المؤلفون / معرف / H / HM / HMBRAND / dor-5.8.1.diff.

· "unpack ()" سوف افتراضيًا لتفريغ $ _.

· ستتم دراسة تقنيات النسخ على الكتابة المختلفة على أمل تسريع لغة بيرل.

· CPANPLUS ، Inline ، و Module :: Build ستصبح وحدات أساسية.

· سيتم تقديم القدرة على كتابة البراغمات المعجمية الحقيقية.

سيستمر العمل على bytecompiler و byteloader.

تمت جدولة سلاسل v كما هي موجودة حاليًا ليتم إهمالها. شكل v-less
(1.2.3) سيصبح "كائن إصدار" عند استخدامه مع "استخدام" و "يتطلب" و $ VERSION.
سيكون $ ^ V أيضًا "كائن إصدار" لذا لن يعد إنشاء printf ("٪ vd"، ...)
هناك حاجة. سيصبح إصدار v-ful (v1.2.3) قديمًا. معادلة
ستختفي السلاسل و v-strings (على سبيل المثال أن 5.8.0 حاليًا تساوي "\ 5 \ 8 \ 0").
هناك قد be لا انتقاص تحذير For سلاسل v، على الرغم من: من الصعب جدًا اكتشافه
عندما يتم استخدام سلاسل v بأمان وعندما لا يتم استخدامها.

· 5.005 خيوط ستتم إزالتها

· سيتم إزالة المتغير $ * (تم إهماله منذ وقت طويل)

· ستتم إزالة الحلقات الكاذبة

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


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

إذا كنت تعتقد أن لديك خطأ لم يتم الإبلاغ عنه ، فيرجى تشغيل com.perlbug البرنامج المتضمن مع
إطلاق سراحك. تأكد من تقليم الخطأ الخاص بك إلى حالة اختبار صغيرة ولكنها كافية. علة الخاص بك
التقرير ، جنبًا إلى جنب مع ناتج "perl -V" ، سيتم إرساله إلى perlbug@perl.org أن تكون
حللها فريق بيرل. يمكنك التصفح والبحث في أخطاء Perl 5 على
http://bugs.perl.org/

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



أحدث برامج Linux و Windows عبر الإنترنت