Perl operators have the following associativity and precedence, listed from highest precedence to lowest. Table cells indicate groups of operators of equal precedence.
Assoc. | Operators | Description |
---|---|---|
right | terms and list operators | See next page. |
left |
| Infix dereference operator. |
none |
| Auto-increment (magical on strings). |
| Auto-decrement. | |
right |
| Exponentiation. |
right | Reference to an object (unary). | |
right |
| Unary logical NOT, bitwise NOT. |
right |
| Unary plus, minus. |
left |
| Binds a scalar expression to a pattern match. |
left |
| Same, but negates the result. |
left |
| Multiplication, division, modulo, repetition. |
left |
| Addition, subtraction, concatenation. |
left |
| Bitwise shift right, bitwise shift left. |
right | named unary operators | E.g., sin, chdir, |
none |
lt gt le ge | Numerical relational operators. String relational operators. |
none |
eq ne cmp
| Numerical equal, not equal, compare. Stringwise equal, not equal, compare. Smartmatch. |
left |
| Bitwise AND. |
left |
| Bitwise OR, bitwise XOR. |
left |
| Logical AND. |
left |
| |
none |
| Range operator. |
| Alternative range operator. | |
right |
| Ternary if |
right |
| Assignment operators. |
left |
| Comma operator, also list element separator. |
left |
| Same, enforces the left operand to be a string. |
right | list operators (rightward) | See below. |
right | not | Low precedence logical NOT. |
left | and | Low precedence logical AND. |
left | or | Low precedence logical OR. |
left | xor | Low precedence logical XOR. |
Parentheses can be used to group an expression into a term.
A list consists of expressions, variables, arrays, hashes, slices, or lists, separated by commas. It will always be interpreted as one flat series of values.
Perl functions that can be used as list operators have either very high or very low precedence, depending on whether you look at the left side of the operator or at the right side of the operator. Parentheses can be added around the parameter lists to avoid precedence problems.
The logical operators do not evaluate the right operand if the result is already known after evaluation of the left operand.
Compare operators return –1 (less), 0 (equal), or 1 (greater).
perldoc -f
func will provide extensive information on the named function.