Arithmetic operators: + (plus),-(minus), * (multiply),/(except), * * (Power),% (take more),-(Monocular negative)
(1) The cardinality of the power can not be negative, such as ( -5) * * 2.5 # error;
(2) The result of power can not exceed the limit of computer expression, such as 999999 # error
(3) The operand of the remainder, if not an integer, rounded to an integer; the right-hand side of the operator cannot be zero
(4) Monocular negative can be used for variables:-$y; # equivalent to $y *-1
Second, the integer comparison operator
Table 3.1. integer comparison operator
| operator |
description |
| |
|
| |
greater than |
| == |
equals |
| |
less than or equal to |
| is greater than or equal to |
| |
| |
The operator <=> result is:
0-Two values equal
1-The first value is large
1-The second value is large
Three, string comparison operator
Table 3.2. string comparison operator
| Operator |
Describe |
|
| LT |
Less than |
|
| GT |
Greater than |
|
| eq |
Equals |
|
| le |
Less than or equal to |
|
| GE |
Greater than or equal to |
|
| NE |
Not equal to |
|
| CMP |
Compare, return 1, 0, or-1 |
|
Four, the logical operator
Logic or: $a | | $b or $a or $b
Logic with: $a && $b or $a and $b
Logical Non:! $a or not $a
Logical XOR OR: $a xor $b
Five, bitwise operator
Bit and:&
Bit or: |
Bit non: ~
Bitwise XOR OR: ^
Move left: $x << 1
Right Shift: $x >> 2
Note: Do not use & for negative integers, because Perl will convert them to unsigned numbers.
Six, assignment operator
Table 3.3. Assignment operator
| Operator |
Describe |
| = |
Assignment only |
| += |
Addition and assignment |
| -= |
Subtraction and assignment |
| *= |
Multiplication and assignment |
| /= |
Division and Assignment |
| %= |
Remainder and assignment |
| **= |
Exponentiation and Assignment |
| &= |
Bitwise AND Assignment |
| |= |
Bitwise OR and Assignment |
| ^= |
Bitwise XOR and Assignment |
Table 3.4. Assignment Operator Example
| An expression |
An equivalent expression |
| $a = 1; |
None (Basic Assignment) |
| $a-= 1; |
$a = $a-1; |
| $a *= 2; |
$a = $a * 2; |
| $a/= 2; |
$a = $a/2; |
| $a%= 2; |
$a = $a% 2; |
| $a **= 2; |
$a = $a * * 2; |
| $a &= 2; |
$a = $a & 2; |
| $a |= 2; |
$a = $a | 2; |
| $a ^= 2; |
$a = $a ^ 2; |
. = Multiple occurrences can occur in an assignment statement, such as:
$value 1 = $value 2 = "a string";
. = as a child expression
($a = $b) + + 3;
Equivalent to
$a = $b;
$a + 3;
It is not recommended to use this approach.
Vii. self-reducing operator: + + 、--(same as in C + +)
. Do not use this operator on both sides of a variable: + + $var--# Error
. Do not use it again in the same expression after the variable has been increased/reduced: $var 2 = $var 1 + + + + $var 1; # error
. in Perl, + + can be used for strings, but when the end character is ' z ', ' z ', ' 9 ', such as:
$stringvar = "ABC";
$stringvar + +; # $stringvar contains ' Abd ' now
$stringvar = "ABC";
$stringvar + +; # $stringvar contains ' ABD ' now
$stringvar = "Abz";
$stringvar + +; # $stringvar now contains ' aca '
$stringvar = "Agzzz";
$stringvar + +; # $stringvar now contains ' ahaaa '
$stringvar = "AB4";
$stringvar + +; # $stringvar now contains ' AB5 '
$stringvar = "bc999";
$stringvar + +; # $stringvar now contains ' bd000 '
. Do not use--,perl will first convert the string to a number and then subtract from it
$stringvar = "ABC";
$stringvar--; # $stringvar =-1 now
. If the string contains non-alphanumeric characters, or digits in letters, the value of the + + operation is converted to a numeric zero, so the result is 1, such as:
$stringvar = "Ab*c";
$stringvar + +;
$stringvar = "ab5c";
$stringvar + +;
Eight, string joins and repeat operators
Join:.
Repeat: X
Join and assign a value (similar to + =):. =
Cases:
$newstring = "Potato". "Head";
$newstring = "T" x 5;
$a = "be";
$a. = "Witched"; # $a is now ' bewitched '
Nine, comma operator
The preceding expression is preceded by an operation, such as:
$var 1 = 1, $var 2 = $var 1;
Equivalent to
$var 1 = 1;
$var 2 = $var 1;
The only reason to use this operator is to improve the readability of the program and to combine two expressions that are closely related, such as:
$val = 26;
$result = (+ + $val, $val + 5); # $result = 32
Note that the meaning is different if there are no parentheses here:
$val = 26;
$result = + + $val, $val + 5; # $result = 27
Ten, the condition operator
Similar to C, the condition is 1: The value 2, when the condition is true, the value 1, the false time value 2, such as:
$result = $var = = 0? 14:7;
$result = + ($divisor = = 0 0: $dividend/$divisor);
In PERL 5, you can also use a conditional operator on the left side of an assignment to select a variable that is assigned a value, such as:
$condvar = = 43? $var 1: $var 2 = 14;
$condvar = = 43? $var 1 =: $var 2 = 14;
Xi. Order of Operators
Table 3.6. Operator Order
| Operator |
Describe |
| ++, -- |
Self-increasing, self-reducing |
| -, ~, ! |
Monocular |
| ** |
Squares |
| =~, !~ |
Pattern matching |
| *, /, %, x |
Multiply, divide, take over, repeat |
| +, -, . |
Add, subtract, join |
| <<, >> |
Shift |
| - e,- R, etc. |
File status |
| <, <=, >, >=, lt, le, gt, ge |
Unequal comparison |
| = =, !=, <=>, eq, ne, cmp |
Equality comparisons |
| & |
Bit and |
| |, ^ |
Bit or, bit XOR or |
| && |
Logic and |
| || |
Logical OR |
| .. |
List range |
| ? and : |
Conditional operator |
| =, +=, -=, *=, |
assigning values |
| And so on |
|
| , |
Comma operator |
| not |
Low-precedence Logical Not |
| and |
Low-precedence Logical AND |
| or, xor |
Low-precedence logical OR and XOR |
. Operator Associativity (associativity):
Table 3.7. Operator associativity
| Operator |
Combination of |
| ++, -- |
No |
| -, ~, ! |
Right-to-left |
| ** |
Right-to-left |
| =~, !~ |
Left-to-right |
| *, /, %, x |
Left-to-right |
| +, -, . |
Left-to-right |
| <<, >> |
Left-to-right |
| - e,- R, |
No |
| <, <=, >, >=, lt, le, gt, ge |
Left-to-right |
| = =, !=, <=>, eq, ne, cmp |
Left-to-right |
| & |
Left-to-right |
| |, ^ |
Left-to-right |
| && |
Left-to-right |
| || |
Left-to-right |
| .. |
Left-to-right |
| ? and : |
Right-to-left |
| =, +=, -=, *=, |
Right-to-left |
| And so on |
|
| , |
Left-to-right |
| not |
Left-to-right |
| and |
Left-to-right |
| or, xor |
Left-to-right |
Recommendation:
1, when you are unsure whether an operator executes first, be sure to use parentheses.
2, use multirow, spaces, and so on to improve the readability of the program.