بيرل مشغلي
مشغل يحكي مترجم لأداء محددة لحرف عملية حسابية أو منطقية مثل: 3 + 2 = 5.
لغة بيرل بنى ثروة من المشغلين، ونحن ننظر في عدة شيوعا:
- العوامل الحسابية
- مقارنة
- مشغلي منطقية
- عوامل التعيين
- أحادي المعامل مشغلي
- مشغل اقتباس
- المشغلين الآخرين
- أسبقية المشغل
العوامل الحسابية
مثلا شكل وضعنا في المتغير $ a غير 10، $ ب 20.
مشغلي | وصف | أمثلة |
---|---|---|
+ | الجامع | $ A + $ ب 30 النتائج |
- | طرح | $ A - $ ب النتيجة هي -10 |
* | ضرب | A $ * $ ب 200 نتائج |
/ | تقسيم | $ B / $ نتيجة ل2 |
٪ | معامل باقي القسمة، والباقي بعد القسمة | $ B $٪ نتيجة لهي 0 |
** | الأسية | $ A $ ** ب 10 نتائج قوة ال 20 |
أمثلة
#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a , \$b = $b\n"; $c = $a + $b; print '$a + $b = ' . $c . "\n"; $c = $a - $b; print '$a - $b = ' . $c . "\n"; $c = $a * $b; print '$a * $b = ' . $c . "\n"; $c = $a / $b; print '$a / $b = ' . $c . "\n"; $c = $a % $b; print '$a % $b = ' . $c. "\n"; $a = 2; $b = 4; $c = $a ** $b; print '$a ** $b = ' . $c . "\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = 10 , $b = 20 $a + $b = 30 $a - $b = -10 $a * $b = 200 $a / $b = 0.5 $a % $b = 10 $a ** $b = 16
مقارنة
مثلا شكل وضعنا في المتغير $ a غير 10، $ ب 20.
مشغلي | وصف | أمثلة |
---|---|---|
== | تحقق قيمة المعاملات هما على قدم المساواة، إذا كانت تساوي ثم كان الشرط صحيحا، كاذبة خلاف ذلك. | ($ A $ == ب) هو زائف |
! = | تحقق قيمة المعاملات هما على قدم المساواة، إن لم يكن شرط المساواة حقيقية، كاذبة خلاف ذلك. | ($ A! = $ B) هو الصحيح. |
<=> | تحقق قيمة المعاملات هما على قدم المساواة، إذا كان الرقم أقل من عدد إلى اليسار من حق العودة -1 عودة 0 إذا كانت تساوي، إذا كان الرقم أكبر من عدد من اليسار إلى اليمين العائد 1. | ($ A $ <=> ب) إرجاع -1. |
> | تحقق قيمة المعامل الأيسر أكبر من قيمة المعامل الصحيح، وإذا كان الشرط صحيحا، كاذبة خلاف ذلك. | ($ A> $ ب) ترجع كاذبة. |
< | تحقق قيمة المعامل الأيسر أقل من قيمة المعامل الصحيح، وإذا كان الشرط صحيحا، كاذبة خلاف ذلك. | ($ A <$ ب) يعود صحيحا. |
> = | تحقق قيمة المعامل الأيسر أكبر من أو مساوية لقيمة المعامل الصحيح، وإذا كان الشرط صحيحا، كاذبة خلاف ذلك. | ($ A> = $ ب) ترجع كاذبة. |
<= | تحقق قيمة المعامل الأيسر أقل من أو تساوي قيمة المعامل الصحيح، وإذا كان الشرط صحيحا، كاذبة خلاف ذلك. . | ($ A <= $ ب) يعود الحقيقية. |
أمثلة
#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a , \$b = $b\n"; if( $a == $b ){ print "$a == \$b 结果 true\n"; }else{ print "\$a == \$b 结果 false\n"; } if( $a != $b ){ print "\$a != \$b 结果 true\n"; }else{ print "\$a != \$b 结果 false\n"; } $c = $a <=> $b; print "\$a <=> \$b 返回 $c\n"; if( $a > $b ){ print "\$a > \$b 结果 true\n"; }else{ print "\$a > \$b 结果 false\n"; } if( $a >= $b ){ print "\$a >= \$b 结果 true\n"; }else{ print "\$a >= \$b 结果 false\n"; } if( $a < $b ){ print "\$a < \$b 结果 true\n"; }else{ print "\$a < \$b 结果 false\n"; } if( $a <= $b ){ print "\$a <= \$b 结果 true\n"; }else{ print "\$a <= \$b 结果 false\n"; }
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = 10 , $b = 20 $a == $b 结果 false $a != $b 结果 true $a <=> $b 返回 -1 $a > $b 结果 false $a >= $b 结果 false $a < $b 结果 true $a <= $b 结果 true
تم تعيين التالية المثال الجدول $ متغير لل"اي بي سي"، $ ب ب "XYZ"، ثم استخدام عامل مقارنة لحساب النتائج.
مشغلي | وصف | أمثلة |
---|---|---|
LT | تحقق السلسلة على اليسار هو أقل من السلسلة على حق العودة إذا كان صحيحا، كاذبة خلاف ذلك. | ($ A $ لتر ب) إرجاع صحيح. |
GT | تحقق ما إذا كانت السلسلة على اليسار أكبر من السلسلة على حق العودة إذا كان صحيحا، كاذبة خلاف ذلك. | ($ A $ GT ب) يعود كاذبة. |
لو | تحقق السلسلة على اليسار هو أقل من أو تساوي السلسلة على الحق، اذا عاد صحيح، وبخلاف ذلك كاذب. | ($ A $ لو ب) إرجاع صحيح |
شركة جنرال الكتريك | تحقق ما إذا كانت السلسلة على اليسار هو أكبر من أو مساوية لسلسلة على الحق، واذا عاد صحيح، وبخلاف ذلك كاذب. | ($ A $ جنرال الكتريك ب) ترجع كاذبة. |
مكافئ | تحقق سلسلة تساوي السلسلة على اليسار إلى اليمين، وإذا كان للعودة صحيح، وبخلاف ذلك كاذب. | ($ A $ مكافئ ب) يعود كاذبة. |
شمال شرق | تحقق السلسلة على اليسار لا تساوي السلسلة على حق العودة إذا كان صحيحا، كاذبة خلاف ذلك. | ($ A $ شمال شرق ب) إرجاع صحيح |
CMP | إذا كانت السلسلة أكبر من حق سلسلة ترك بإرجاع 1 إذا كانت عوائد تساوي 0 إذا كانت السلسلة السلسلة إلى اليمين من اليسار هو أقل من -1. | ($ A $ CMP ب) تعود -1. |
أمثلة
#!/usr/bin/perl $a = "abc"; $b = "xyz"; print "\$a = $a ,\$b = $b\n"; if( $a lt $b ){ print "$a lt \$b 返回 true\n"; }else{ print "\$a lt \$b 返回 false\n"; } if( $a gt $b ){ print "\$a gt \$b 返回 true\n"; }else{ print "\$a gt \$b 返回 false\n"; } if( $a le $b ){ print "\$a le \$b 返回 true\n"; }else{ print "\$a le \$b 返回 false\n"; } if( $a ge $b ){ print "\$a ge \$b 返回 true\n"; }else{ print "\$a ge \$b 返回 false\n"; } if( $a ne $b ){ print "\$a ne \$b 返回 true\n"; }else{ print "\$a ne \$b 返回 false\n"; } $c = $a cmp $b; print "\$a cmp \$b 返回 $c\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = abc ,$b = xyz abc lt $b 返回 true $a gt $b 返回 false $a le $b 返回 true $a ge $b 返回 false $a ne $b 返回 true $a cmp $b 返回 -1
عوامل التعيين
مثلا شكل وضعنا في المتغير $ a غير 10، $ ب 20.
مشغلي | وصف | أمثلة |
---|---|---|
= | عامل التعيين بسيط، القيمة على المعامل الأيمن إلى المعامل الأيسر | $ C $ = أ + ب $ $ سوف + $ ب تعيين قيمة $ ج |
+ = | مشغل الكندي ومهمة، نتيجة إضافة المعامل الأيسر إلى المعامل الصحيح المسندة إلى المعامل الأيسر | $ C + = $ ويساوي $ ج = $ ج + $ ل |
- = | حفظ وعوامل التعيين، وطرح المعامل الأيسر إلى المعامل الصحيح إسناد النتيجة إلى المعامل الأيسر | $ C - = $ ويساوي $ ج = $ ج - $ ل |
* = | تتكاثر وعامل التعيين، يتم ضرب حق المعامل الأيسر من المعامل تعيين النتيجة إلى المعامل الأيسر | $ C * = $ ويساوي $ ج = $ ج * $ ل |
/ = | وبالإضافة إلى ذلك، واحالة المشغلين والمعامل ترك مقسوما على حق المعامل تعيين النتيجة إلى المعامل الأيسر | $ C / = $ ويساوي $ ج = $ ج / $ ل |
٪ = | مودولو وعامل التعيين، ومبلغ اثنين من العفن المعاملات المسندة إلى المعامل الأيسر | $ C٪ = $ ويساوي $ ج = $ ج٪ ل |
** = | الأسي وتعيين المشغل، مجموع اثنين من المعاملات مضروبا في السلطة المسندة إلى المعامل الأيسر | $ C ** = $ ويساوي $ ج = $ ج ** $ ل |
أمثلة
#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a ,\$b = $b\n"; $c = $a + $b; print "赋值后 \$c = $c\n"; $c += $a; print "\$c = $c ,运算语句 \$c += \$a\n"; $c -= $a; print "\$c = $c ,运算语句 \$c -= \$a\n"; $c *= $a; print "\$c = $c ,运算语句 \$c *= \$a\n"; $c /= $a; print "\$c = $c ,运算语句 \$c /= \$a\n"; $c %= $a; print "\$c = $c ,运算语句 \$c %= \$a\n"; $c = 2; $a = 4; print "\$a = $a , \$c = $c\n"; $c **= $a; print "\$c = $c ,运算语句 \$c **= \$a\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = 10 ,$b = 20 赋值后 $c = 30 $c = 40 ,运算语句 $c += $a $c = 30 ,运算语句 $c -= $a $c = 300 ,运算语句 $c *= $a $c = 30 ,运算语句 $c /= $a $c = 0 ,运算语句 $c %= $a $a = 4 , $c = 2 $c = 16 ,运算语句 $c **= $a
الحوسبة قليلا
مشغلي المختصة بالبت بناء على الشيء، والشيء عن عملية قليلا.
إعداد $ A = 60، $ ب = 13، ممثلة الآن في شكل ثنائي، وهم على النحو التالي:
$a = 0011 1100 $b = 0000 1101 ----------------- $a&$b = 0000 1100 $a|$b = 0011 1101 $a^$b = 0011 0001 ~$a = 1100 0011
بت دعم الحوسبة بيرل حرف على النحو التالي:
مشغلي | وصف | أمثلة |
---|---|---|
و | إذا كان كل وجود في اثنين من المعاملات، وثنائي ومشغل لنسخ نتيجة لذلك. | أن ($ A & $ ب) أن يكون 12 إلى ثنائي 0000 1100 |
| | إذا كان موجودا في أي من المعامل، ثنائي أو مشغل لنسخ نتيجة لذلك. | ($ A | $ ب) سيكون 61، ثنائي هو 00111101 |
^ | إذا كان موجودا في أحد المعامل، ولكن لا وجود لها في وقت واحد في اثنين من المعاملات، مشغل XOR ثنائي نسخة منها إلى نتيجة. | ($ A ^ ب $) سيكون 49، ثنائي هو 00110001 |
~ | ثنائي مشغل تكملة هو عامل أحادي، وهو "الوجه" تأثير الموقف. | (~ $ A) سيكون -61، ثنائي 1100 شكل 0011 تكملة عدد ثنائي مع علامة. |
<< | ثنائي مشغل التحول الأيسر. قيمة المعامل الأيسر للتحرك اليسار واليمين المعامل عدد محدد من الأرقام. | $ A << 2 سيكون 240، ثنائي هو 11110000 |
>> | ثنائي مشغل التحول الصحيح. قيمة المعامل الأيسر تتحرك المعامل الحق في عدد محدد من البتات إلى اليمين. | $ A >> 2 سيكون 15، ثنائي هو 0000 1111 |
أمثلة
#!/usr/bin/perl use integer; $a = 60; $b = 13; print "\$a = $a , \$b = $b\n"; $c = $a & $b; print "\$a & \$b = $c\n"; $c = $a | $b; print "\$a | \$b = $c\n"; $c = $a ^ $b; print "\$a ^ \$b = $c\n"; $c = ~$a; print "~\$a = $c\n"; $c = $a << 2; print "\$a << 2 = $c\n"; $c = $a >> 2; print "\$a >> 2 = $c\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = 60 , $b = 13 $a & $b = 12 $a | $b = 61 $a ^ $b = 49 ~$a = -61 $a << 2 = 240 $a >> 2 = 15
مشغلي منطقية
شركات بيرل المنطقية في الجدول التالي.
مثلا شكل وضعنا في المتغير $ a غير صحيح، $ ب خاطئة.
مشغلي | وصف | أمثلة |
---|---|---|
و | المنطقي والمشغل المشغل. إذا كان كل المعاملات صحيحة، والشرط صحيحا. | ($ A $ وب) غير صحيح. |
&& | C-أسلوب منطقي والمشغل المشغل. إذا كان كل المعاملات صحيحة، والشرط صحيحا | ($ A $ && ب) غير صحيح. |
أو | المنطقي أو المشغل. إذا كان كل المعاملات لديها أي غير صفرية، كان الشرط صحيحا. | ($ A $ أو ب) غير صحيحة. |
|| | C- نمط منطقي أو المشغل. إذا كان كل المعاملات لديها أي غير صفرية، كان الشرط صحيحا. | ($ A $ || ب) غير صحيح. |
ليس | منطقيا لا المشغل. ومن المقلوب منطق الدولة من المعامل. إذا كان الشرط صحيحا، فإن لم يكن العامل المنطقي جعله كاذبة. | لا ($ A $ وب) هو الصحيح. |
أمثلة
#!/usr/bin/perl $a = true; $b = false; print "\$a = $a , \$b = $b\n"; $c = ($a and $b); print "\$a and \$b = $c\n"; $c = ($a && $b); print "\$a && \$b = $c\n"; $c = ($a or $b); print "\$a or \$b = $c\n"; $c = ($a || $b); print "\$a || \$b = $c\n"; $a = 0; $c = not($a); print "not(\$a)= $c\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = true , $b = false $a and $b = false $a && $b = false $a or $b = true $a || $b = true not($a)= 1
عملية الاقتباس
بيرل يقتبس المشغلين في الجدول التالي.
مشغلي | وصف | أمثلة |
---|---|---|
ف {} | السلسلة مع اقتباس واحد | ف {ABCD} نتائج 'ABCD " |
ف ف {} | سلسلة من علامات الاقتباس المزدوجة | ف ف {ABCD} النتائج ل "ABCD" |
QX {} | السلسلة مع backquotes | QX {ABCD} والنتيجة هي `abcd` |
أمثلة
#!/usr/bin/perl $a = 10; $b = q{a = $a}; print "q{a = \$a} = $b\n"; $b = qq{a = $a}; print "qq{a = \$a} = $b\n"; # 使用 unix 的 date 命令执行 $t = qx{date}; print "qx{date} = $t\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
q{a = $a} = a = $a qq{a = $a} = a = 10 qx{date} = 2016年 6月10日 星期五 16时22分33秒 CST
المشغلين الآخرين
بالإضافة إلى ما سبق ذكرنا المشغلين خارج، بيرل كما تدعم العوامل التالية:
مشغلي | وصف | أمثلة |
---|---|---|
. | نقطة (.) ويستخدم لربط سلسلتين. | إذا $ ل= "المدى"، $ ب = "OOB"، $ A. النتائج $ B ل "w3big" |
س | مشغل س بإرجاع سلسلة من التكرار. | ( '-' X 3) الناتج ---. |
.. | .. في مجموعة من المشغلين. | (2..5) والناتج هو (2، 3، 4، 5) |
++ | مشغل الاضافة، يتم زيادة قيمة عدد صحيح من 1 | $ A = 10، أمريكي لل++ سيتم إخراج 11 |
- | مشغلي إنقاص، قيمة عددية انخفضت بنسبة 1 | $ A = 10، $ a-- الناتج 9 |
-> | تحديد أسلوب فئة للسهم | $ الكائنات -> $ تمثيل الكائن $ الكائنات $ طريقة. |
أمثلة
#!/usr/bin/perl $a = "run"; $b = "oob"; print "\$a = $a , \$b = $b\n"; $c = $a . $b; print "\$a . \$b = $c\n"; $c = "-" x 3; print "\"-\" x 3 = $c\n"; @c = (2..5); print "(2..5) = @c\n"; $a = 10; $b = 15; print "\$a = $a , \$b = $b\n"; $a++; $c = $a ; print "\$a 执行 \$a++ = $c\n"; $b--; $c = $b ; print "\$b 执行 \$b-- = $c\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = run , $b = oob $a . $b = w3big "-" x 3 = --- (2..5) = 2 3 4 5 $a = 10 , $b = 15 $a 执行 $a++ = 11 $b 执行 $b-- = 14
أسبقية المشغل
يسرد الجدول التالي بيرل مشغل لغة الأسبقية:
مشغل مشغلي | ملزم |
---|---|
++ - | لا |
- ~ ،! | اليمين إلى اليسار |
** | اليمين إلى اليسار |
= ~! ~ | من اليسار إلى اليمين |
*، /،٪، X | من اليسار إلى اليمين |
+، - ،. | من اليسار إلى اليمين |
<< >> | من اليسار إلى اليمين |
-e، -r، | لا |
<، <=،>،> =، الملازم، جنيه، جي تي، شركة جنرال الكتريك | من اليسار إلى اليمين |
== ،! =، <=>، المعادلة، شمال شرق، CMP | من اليسار إلى اليمين |
و | من اليسار إلى اليمين |
|، ^ | من اليسار إلى اليمين |
&& | من اليسار إلى اليمين |
|| | من اليسار إلى اليمين |
.. | من اليسار إلى اليمين |
؟ و: | اليمين إلى اليسار |
=، + =، - =، * =، | اليمين إلى اليسار |
آخر | |
، | من اليسار إلى اليمين |
ليس | من اليسار إلى اليمين |
و | من اليسار إلى اليمين |
أو، XOR | من اليسار إلى اليمين |
أمثلة
#!/usr/bin/perl $a = 20; $b = 10; $c = 15; $d = 5; $e; print "\$a = $a, \$b = $b, \$c = $c ,\$d = $d\n"; $e = ($a + $b) * $c / $d; print "(\$a + \$b) * \$c / \$d = $e\n"; $e = (($a + $b) * $c )/ $d; print "((\$a + \$b) * \$c) / \$d = $e\n"; $e = ($a + $b) * ($c / $d); print "(\$a + \$b) * (\$c / \$d ) = $e\n"; $e = $a + ($b * $c ) / $d; print "\$a + (\$b * \$c )/ \$d = $e\n";
إخراج تنفيذ البرنامج المذكور أعلاه هو:
$a = 20, $b = 10, $c = 15 ,$d = 5 ($a + $b) * $c / $d = 90 (($a + $b) * $c) / $d = 90 ($a + $b) * ($c / $d ) = 90 $a + ($b * $c )/ $d = 50