โอเปอเรเตอร์เป็นสัญลักษณ์ที่บอกให้คอมไพลเลอร์ดำเนินการทางคณิตศาสตร์หรือตรรกะเฉพาะ เช่น 3+2=5
ภาษา Perl มีโอเปอเรเตอร์ในตัวมากมาย
ตัวดำเนินการทางคณิตศาสตร์
ตัวดำเนินการเปรียบเทียบ
ตัวดำเนินการเชิงตรรกะ
ผู้ปฏิบัติงานที่ได้รับมอบหมาย
ตัวดำเนินการบิต
ตัวดำเนินการเสนอราคา
ผู้ประกอบการรายอื่น
ลำดับความสำคัญของตัวดำเนินการ
ในตัวอย่างตาราง เราตั้งค่าตัวแปร $a เป็น 10 และ $b เป็น 20
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
- | ส่วนที่เพิ่มเข้าไป | $a + $b ผลลัพธ์ใน 30 |
- | การดำเนินการลบ | $a - $b ให้ผลลัพธ์เป็น -10 |
- | การคูณ | $a * $b ให้ผลลัพธ์เป็น 200 |
- | ปฏิบัติการกอง | $b / $a ผลลัพธ์ใน 2 |
- | ค้นหาการดำเนินการของเศษ เศษที่เหลือหลังจากการหารจำนวนเต็ม | $b % $a ผลลัพธ์เป็น 0 |
- | ทวีคูณกำลัง | ผลลัพธ์ของ $a**$b คือ 10 ยกกำลัง 20 |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = 10 , $b = 20$a + $b = 30$a - $b = -10$a * $b = 200$a / $b = 0.5$a % $b = 10$a ** $ ข = 16
ในตัวอย่างตาราง เราตั้งค่าตัวแปร $a เป็น 10 และ $b เป็น 20
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการสองตัวเท่ากันหรือไม่ หากเท่ากันเงื่อนไขจะเป็นจริง หรือไม่เช่นนั้นจะเป็นเท็จ | ($a == $b) เป็นเท็จ |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งสองมีค่าเท่ากันหรือไม่ หากเงื่อนไขไม่เป็นจริง ไม่เช่นนั้นจะเป็นเท็จ | ($a != $b) เป็นจริง |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทั้งสองมีค่าเท่ากันหรือไม่ โดยส่งคืน -1 หากตัวเลขทางด้านซ้ายน้อยกว่าตัวเลขทางด้านขวา 0 หากเท่ากัน และ 1 หากตัวเลขทางด้านซ้ายมากกว่าตัวเลข ทางด้านขวา | ($a <=> $b) ส่งคืน -1 |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทางซ้ายมากกว่าค่าของตัวถูกดำเนินการทางขวาหรือไม่ หากเป็นเช่นนั้น เงื่อนไขจะเป็นจริง หรือไม่เช่นนั้นจะเป็นเท็จ | ($a > $b) ส่งคืนค่าเท็จ |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทางซ้ายน้อยกว่าค่าของตัวถูกดำเนินการทางขวาหรือไม่ หากเป็นเช่นนั้น เงื่อนไขจะเป็นจริง หรือไม่เช่นนั้นก็จะส่งกลับค่าเท็จ | ($a < $b) ให้ค่าเป็นจริง |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทางซ้ายมากกว่าหรือเท่ากับค่าของตัวถูกดำเนินการทางขวา หากเป็นเช่นนั้น เงื่อนไขจะเป็นจริง หรือไม่เช่นนั้นก็จะส่งกลับค่าเท็จ | ($a >= $b) ส่งคืนค่าเท็จ |
- | ตรวจสอบว่าค่าของตัวถูกดำเนินการทางซ้ายน้อยกว่าหรือเท่ากับค่าของตัวถูกดำเนินการทางขวา หากเป็นเช่นนั้น เงื่อนไขจะเป็นจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ - | ($a <= $b) ให้ค่าเป็นจริง |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = 10 , $b = 20$a == $b ผลลัพธ์คือ false$a != $b ผลลัพธ์คือ true$a <=> $b Return -1$a > $b ผลลัพธ์คือ false$a >= $b ผลลัพธ์เป็นเท็จ $a < $b ผลลัพธ์จริง$a <= $b ผลลัพธ์เป็นจริง
ในตัวอย่างตารางต่อไปนี้ ให้ตั้งค่าตัวแปร $a เป็น "abc" และ $b เป็น "xyz" จากนั้นใช้ตัวดำเนินการเปรียบเทียบเพื่อคำนวณผลลัพธ์
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
lt | ตรวจสอบว่าสตริงทางด้านซ้ายมีขนาดเล็กกว่าสตริงทางด้านขวาหรือไม่ หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a lt $b) ให้ค่าเป็นจริง |
gt | ตรวจสอบว่าสตริงทางด้านซ้ายมากกว่าสตริงทางด้านขวาหรือไม่ หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a gt $b) ส่งคืนค่าเท็จ |
เลอ | ตรวจสอบว่าสตริงทางด้านซ้ายน้อยกว่าหรือเท่ากับสตริงทางด้านขวาหรือไม่ หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a le $b) ให้ค่าเป็นจริง |
ge | ตรวจสอบว่าสตริงทางด้านซ้ายมากกว่าหรือเท่ากับสตริงทางด้านขวา หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a ge $b) ส่งคืนค่าเท็จ |
สมการ | ตรวจสอบว่าสตริงทางด้านซ้ายเท่ากับสตริงทางด้านขวาหรือไม่ หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a eq $b) ส่งกลับค่าเท็จ |
ne | ตรวจสอบว่าสตริงทางด้านซ้ายไม่เท่ากับสตริงทางด้านขวาหรือไม่ หากเป็นเช่นนั้นจะส่งกลับค่าจริง หรือไม่เช่นนั้นจะส่งกลับค่าเท็จ | ($a ne $b) ให้ค่าเป็นจริง |
ซีเอ็มพี | ส่งคืน 1 หากสตริงทางด้านซ้ายมากกว่าสตริงทางด้านขวา คืนค่า 0 หากเท่ากัน และ -1 หากสตริงทางด้านซ้ายน้อยกว่าสตริงทางด้านขวา | ($a cmp $b) ส่งคืน -1 |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = abc, $b = xyzabc 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 และ $b เป็น 20
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
- | ตัวดำเนินการกำหนดอย่างง่าย กำหนดค่าของตัวถูกดำเนินการทางขวาให้กับตัวถูกดำเนินการทางซ้าย | $c = $a + $b จะกำหนดค่า $a + $b ให้กับ $c |
- | ตัวดำเนินการบวกและการกำหนดจะกำหนดผลลัพธ์ของการเพิ่มตัวถูกดำเนินการทางขวาให้กับตัวถูกดำเนินการทางซ้ายไปยังตัวถูกดำเนินการทางซ้าย | $c += $a เท่ากับ $c = $c + $a |
- | ตัวดำเนินการการลบและการกำหนดจะกำหนดผลลัพธ์ของการลบตัวถูกดำเนินการทางขวาจากตัวถูกดำเนินการทางซ้ายไปยังตัวถูกดำเนินการทางซ้าย | $c -= $a เท่ากับ $c = $c - $a |
- | ตัวดำเนินการคูณและการกำหนดจะกำหนดผลลัพธ์ของการคูณตัวถูกดำเนินการทางขวาด้วยตัวถูกดำเนินการทางซ้ายให้กับตัวถูกดำเนินการทางซ้าย | $c *= $a เท่ากับ $c = $c * $a |
- | ผู้ดำเนินการแบ่งและกำหนดผลการหารตัวถูกดำเนินการทางซ้ายด้วยตัวถูกดำเนินการทางขวาให้กับตัวถูกดำเนินการทางซ้าย | $c /= $a เท่ากับ $c = $c / $a |
- | Modulo และตัวดำเนินการกำหนด ค้นหาโมดูลัสของตัวถูกดำเนินการสองตัว และกำหนดให้กับตัวถูกดำเนินการด้านซ้าย | $c %= $a เทียบเท่ากับ $c = $c % a |
- | ตัวดำเนินการยกกำลังและมอบหมายงานจะค้นหากำลังของตัวถูกดำเนินการทั้งสองตัวและกำหนดให้กับตัวถูกดำเนินการทางซ้าย | $c **= $a เท่ากับ $c = $c ** $a |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$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
ตัวดำเนินการ Bitwise ทำงานกับบิตและดำเนินการทีละบิต
การตั้งค่า $a = 60, $b = 13 ขณะนี้อยู่ในรูปแบบไบนารี่ มีลักษณะดังนี้:
$a = 0011 1100$b = 0000 1101-----------------$a&$b = 0000 1100$a|$b = 0011 1101$a^$b = 0011 0001 ~$a = 1100 0011
ตัวดำเนินการระดับบิตที่สนับสนุนโดย Perl จะแสดงอยู่ในตารางต่อไปนี้:
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
- | ตัวดำเนินการไบนารี AND จะคัดลอกหนึ่งบิตไปยังผลลัพธ์หากมีตัวถูกดำเนินการทั้งสองตัว | ($a & $b) จะให้ 12 ซึ่งในไบนารี่คือ 0000 1100 |
- | ตัวดำเนินการไบนารีหรือจะคัดลอกหนึ่งบิตไปยังผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการอย่างใดอย่างหนึ่ง | ($a | $b) จะได้รับ 61 ซึ่งก็คือ 0011 1101 ในรูปแบบไบนารี |
- | ตัวดำเนินการไบนารี XOR จะคัดลอกบิตไปยังผลลัพธ์หากมีอยู่ในตัวถูกดำเนินการตัวใดตัวหนึ่ง แต่ไม่ใช่ทั้งสองตัว | ($a ^ $b) จะให้ 49 แก่คุณ ซึ่งในไบนารี่คือ 0011 0001 |
- | ตัวดำเนินการเสริมไบนารีคือตัวดำเนินการเอกภาคที่มีผลกระทบของการ "พลิก" บิต นั่นคือ 0 กลายเป็น 1 และ 1 กลายเป็น 0 | (~$a ) จะให้ -61 ซึ่งก็คือ 1100 0011 ในไบนารี่ ซึ่งเป็นรูปแบบเสริมของเลขฐานสองที่ลงนาม |
- | ตัวดำเนินการกะซ้ายแบบไบนารี ค่าของตัวถูกดำเนินการทางซ้ายจะถูกเลื่อนไปทางซ้ายตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการทางขวา | $a << 2 จะให้ 240 แก่คุณ ซึ่งก็คือ 1111 0000 ในรูปแบบไบนารี |
- | ตัวดำเนินการกะขวาแบบไบนารี ค่าของตัวถูกดำเนินการทางซ้ายจะถูกเลื่อนไปทางขวาตามจำนวนบิตที่ระบุโดยตัวถูกดำเนินการทางขวา | $a >> 2 จะได้ 15 ซึ่งในไบนารี่คือ 0000 1111 |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = 60 , $b = 13$a & $b = 12$a |. $b = 61$a ^ $b = 49~$a = -61$a << 2 = 240$a >> 2 = 15
ตัวดำเนินการเชิงตรรกะ Perl จะแสดงอยู่ในตารางต่อไปนี้
ในตัวอย่างตาราง เราตั้งค่าตัวแปร $a ให้เป็นจริง และ $b เป็นเท็จ
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
และ | ตัวดำเนินการเชิงตรรกะและ ถ้าตัวถูกดำเนินการทั้งสองเป็นจริง เงื่อนไขจะเป็นจริง | ($a และ $b) เป็นเท็จ |
- | ตัวดำเนินการ AND แบบตรรกะแบบ C เงื่อนไขจะเป็นจริงหากตัวถูกดำเนินการทั้งสองเป็นจริง | ($a && $b) เป็นเท็จ |
หรือ | ตัวดำเนินการเชิงตรรกะหรือ เงื่อนไขจะเป็นจริงหากตัวถูกดำเนินการตัวใดตัวหนึ่งไม่เป็นศูนย์ | ($a หรือ $b) เป็นจริง |
- | ตัวดำเนินการหรือตรรกะแบบ C เงื่อนไขจะเป็นจริงหากตัวถูกดำเนินการตัวใดตัวหนึ่งไม่เป็นศูนย์ | ($a || $b) เป็นจริง |
ไม่ | ตัวดำเนินการตรรกะไม่ใช่ ใช้เพื่อกลับสถานะตรรกะของตัวถูกดำเนินการ หากเงื่อนไขเป็นจริง ตัวดำเนินการ NOT ทางตรรกะจะทำให้เป็นเท็จ | ไม่($a และ $b) เป็นจริง |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = true , $b = false$a และ $b = false$a && $b = false$a หรือ $b = true$a || $b = truenot($a)= 1
ตัวดำเนินการเครื่องหมายคำพูด Perl จะแสดงอยู่ในตารางต่อไปนี้
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
ถาม{ } | เพิ่มเครื่องหมายคำพูดเดี่ยวลงในสตริง | q{abcd} ผลลัพธ์ใน 'abcd' |
คิวคิว{ } | เพิ่มเครื่องหมายคำพูดคู่ให้กับสตริง | qq{abcd} ให้ผลลัพธ์เป็น "abcd" |
คิวเอ็กซ์{ } | เพิ่ม backticks ให้กับสตริง | qx{abcd} ให้ผลลัพธ์เป็น `abcd` |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
q{a = $a} = a = $aqq{a = $a} = a = 10qx{date} = วันศุกร์ที่ 10 มิถุนายน 2559 เวลา 16:22:33 น. CST
นอกจากตัวดำเนินการที่เรากล่าวถึงข้างต้นแล้ว Perl ยังสนับสนุนตัวดำเนินการดังต่อไปนี้:
ตัวดำเนินการ | อธิบาย | ตัวอย่าง |
---|---|---|
- | จุด (.) ใช้เพื่อเชื่อมสองสตริงเข้าด้วยกัน | ถ้า $a="run", $b="oob" ผลลัพธ์ของ $a.$b คือ "codercto" |
x | ตัวดำเนินการ x ส่งกลับจำนวนครั้งที่สตริงถูกทำซ้ำ | ('-' x 3) ผลลัพธ์คือ --- |
- | .. เป็นผู้ดำเนินการช่วง | (2..5) ผลลัพธ์ที่ได้คือ (2, 3, 4, 5) |
- | ตัวดำเนินการเพิ่มขึ้น ค่าจำนวนเต็มเพิ่มขึ้น 1 | $a =10, $a++ จะส่งออกเป็น 11 |
- | ตัวดำเนินการลดค่า ลดค่าจำนวนเต็มลง 1 | $a =10, $a-- ผลลัพธ์คือ 9 |
- | ลูกศรใช้เพื่อระบุวิธีการของชั้นเรียน | $obj->$a แสดงถึง $a วิธีการของวัตถุ $obj |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$a = run , $b = oob$a . $b = codercto"-" x 3 = ---(2..5) = 2 3 4 5$a = 10 , $b = 15$a ดำเนินการ $a++ = 11$b ดำเนินการ $b-- = 14
ตารางต่อไปนี้แสดงรายการลำดับความสำคัญของตัวดำเนินการของภาษา Perl:
ตัวดำเนินการ | การเชื่อมโยง |
---|---|
- | ไม่มี |
- | จากขวาไปซ้าย |
- | จากขวาไปซ้าย |
- | จากซ้ายไปขวา |
*, /, %, x | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
-e, -r, | ไม่มี |
<, <=, >, >=, lt, เลอ, gt, ge | จากซ้ายไปขวา |
==, !=, <=>, eq, ne, cmp | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
- | จากซ้ายไปขวา |
? และ : | จากขวาไปซ้าย |
- | จากขวาไปซ้าย |
อื่น | |
- | จากซ้ายไปขวา |
ไม่ | จากซ้ายไปขวา |
และ | จากซ้ายไปขวา |
หรือ xor | จากซ้ายไปขวา |
ผลลัพธ์ของการทำงานของโปรแกรมข้างต้นคือ:
$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