سؤال

اقرأ هذا بيرل: استخراج صفوف من 1 إلى ن (نوافذ) لم أفهم جزء Flip-Flop-Operator/ReadLine-Counter.

perl -nE 'say $c if $c=1..3' my_file 

1
2
3E0

هل يمكن لأحد أن يشرح لي المزيد من التفاصيل من أين يأتي هذا الإخراج؟

هل كانت مفيدة؟

المحلول

يقتبس بيرلوب:

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

لا يتم تقييم المعامل الأيمن أثناء وجود المشغل في الحالة "الخاطئة" ، ولا يتم تقييم المعامل الأيسر أثناء وجود المشغل في الحالة "الحقيقية". الأسبقية أقل قليلاً من || و &&. القيمة التي تم إرجاعها هي إما السلسلة الفارغة لخطأ ، أو رقم تسلسل (بدءًا من 1) لـ TRUE. يتم إعادة تعيين رقم التسلسل لكل نطاق واجهته. يحتوي رقم التسلسل النهائي في النطاق على السلسلة "E0" التي تم إلحاقها بها, ، والتي لا تؤثر على قيمتها الرقمية ، ولكنها تمنحك شيئًا للبحث عنه إذا كنت ترغب في استبعاد نقطة النهاية. يمكنك استبعاد نقطة البداية عن طريق انتظار أن يكون رقم التسلسل أكبر من 1.

إذا كان إما معامل القياس ".."هو تعبير مستمر ، أن المعامل يعتبر صحيحًا إذا كان متساويًا (==) إلى رقم سطر الإدخال الحالي ( $. عامل).

(تم اضافة التأكيدات)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top