- Perl Basics
- Perl - Home
- Perl - Introduction
- Perl - Environment
- Perl - Syntax Overview
- Perl - Data Types
- Perl - Variables
- Perl - Scalars
- Perl - Arrays
- Perl - Hashes
- Perl - IF...ELSE
- Perl - Loops
- Perl - Operators
- Perl - Date & Time
- Perl - Subroutines
- Perl - References
- Perl - Formats
- Perl - File I/O
- Perl - Directories
- Perl - Error Handling
- Perl - Special Variables
- Perl - Coding Standard
- Perl - Regular Expressions
- Perl - Sending Email
- Perl Advanced
- Perl - Socket Programming
- Perl - Object Oriented
- Perl - Database Access
- Perl - CGI Programming
- Perl - Packages & Modules
- Perl - Process Management
- Perl - Embedded Documentation
- Perl - Functions References
- Perl Useful Resources
- Perl - Questions and Answers
- Perl - Quick Guide
- Perl - Useful Resources
- Perl - Discussion
Perl - Operators
What is an Operator?
Simple answer can be given using the expression 4 + 5 is equal to 9. Here 4 and 5 are called operands and + is called operator. Perl language supports many operator types, but following is a list of important and most frequently used operators −
- Arithmetic Operators
- Equality Operators
- Logical Operators
- Assignment Operators
- Bitwise Operators
- Logical Operators
- Quote-like Operators
- Miscellaneous Operators
Lets have a look at all the operators one by one.
Perl Arithmetic Operators
Assume variable $a holds 10 and variable $b holds 20, then following are the Perl arithmatic operators −
Sr.No. | Operator & Description |
---|---|
1 | + ( Addition ) Adds values on either side of the operator Example − $a + $b will give 30 |
2 | - (Subtraction) Subtracts right hand operand from left hand operand Example − $a - $b will give -10 |
3 | * (Multiplication) Multiplies values on either side of the operator Example − $a * $b will give 200 |
4 | / (Division) Divides left hand operand by right hand operand Example − $b / $a will give 2 |
5 | % (Modulus) Divides left hand operand by right hand operand and returns remainder Example − $b % $a will give 0 |
6 | ** (Exponent) Performs exponential (power) calculation on operators Example − $a**$b will give 10 to the power 20 |
Perl Equality Operators
These are also called relational operators. Assume variable $a holds 10 and variable $b holds 20 then, lets check the following numeric equality operators −
Sr.No. | Operator & Description |
---|---|
1 | == (equal to) Checks if the value of two operands are equal or not, if yes then condition becomes true. Example − ($a == $b) is not true. |
2 | != (not equal to) Checks if the value of two operands are equal or not, if values are not equal then condition becomes true. Example − ($a != $b) is true. |
3 | <=> Checks if the value of two operands are equal or not, and returns -1, 0, or 1 depending on whether the left argument is numerically less than, equal to, or greater than the right argument. Example − ($a <=> $b) returns -1. |
4 | > (greater than) Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. Example − ($a > $b) is not true. |
5 | < (less than) Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. Example − ($a < $b) is true. |
6 | >= (greater than or equal to) Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. Example − ($a >= $b) is not true. |
7 | <= (less than or equal to) Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. Example − ($a <= $b) is true. |
Below is a list of equity operators. Assume variable $a holds "abc" and variable $b holds "xyz" then, lets check the following string equality operators −
Sr.No. | Operator & Description |
---|---|
1 | lt Returns true if the left argument is stringwise less than the right argument. Example − ($a lt $b) is true. |
2 | gt Returns true if the left argument is stringwise greater than the right argument. Example − ($a gt $b) is false. |
3 | le Returns true if the left argument is stringwise less than or equal to the right argument. Example − ($a le $b) is true. |
4 | ge Returns true if the left argument is stringwise greater than or equal to the right argument. Example − ($a ge $b) is false. |
5 | eq Returns true if the left argument is stringwise equal to the right argument. Example − ($a eq $b) is false. |
6 | ne Returns true if the left argument is stringwise not equal to the right argument. Example − ($a ne $b) is true. |
7 | cmp Returns -1, 0, or 1 depending on whether the left argument is stringwise less than, equal to, or greater than the right argument. Example − ($a cmp $b) is -1. |
Perl Assignment Operators
Assume variable $a holds 10 and variable $b holds 20, then below are the assignment operators available in Perl and their usage −
Sr.No. | Operator & Description |
---|---|
1 | = Simple assignment operator, Assigns values from right side operands to left side operand Example − $c = $a + $b will assigned value of $a + $b into $c |
2 | += Add AND assignment operator, It adds right operand to the left operand and assign the result to left operand Example − $c += $a is equivalent to $c = $c + $a |
3 | -= Subtract AND assignment operator, It subtracts right operand from the left operand and assign the result to left operand Example − $c -= $a is equivalent to $c = $c - $a |
4 | *= Multiply AND assignment operator, It multiplies right operand with the left operand and assign the result to left operand Example − $c *= $a is equivalent to $c = $c * $a |
5 | /= Divide AND assignment operator, It divides left operand with the right operand and assign the result to left operand Example − $c /= $a is equivalent to $c = $c / $a |
6 | %= Modulus AND assignment operator, It takes modulus using two operands and assign the result to left operand Example − $c %= $a is equivalent to $c = $c % a |
7 | **= Exponent AND assignment operator, Performs exponential (power) calculation on operators and assign value to the left operand Example − $c **= $a is equivalent to $c = $c ** $a |
Perl Bitwise Operators
Bitwise operator works on bits and perform bit by bit operation. Assume if $a = 60; and $b = 13; Now in binary format they will be as follows −
$a = 0011 1100
$b = 0000 1101
-----------------
$a&$b = 0000 1100
$a|$b = 0011 1101
$a^$b = 0011 0001
~$a = 1100 0011
There are following Bitwise operators supported by Perl language, assume if $a = 60; and $b = 13
Sr.No. | Operator & Description |
---|---|
1 | & Binary AND Operator copies a bit to the result if it exists in both operands. Example − ($a & $b) will give 12 which is 0000 1100 |
2 | | Binary OR Operator copies a bit if it exists in eather operand. Example − ($a | $b) will give 61 which is 0011 1101 |
3 | ^ Binary XOR Operator copies the bit if it is set in one operand but not both. Example − ($a ^ $b) will give 49 which is 0011 0001 |
4 | ~ Binary Ones Complement Operator is unary and has the efect of 'flipping' bits. Example − (~$a ) will give -61 which is 1100 0011 in 2's complement form due to a signed binary number. |
5 | << Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. Example − $a << 2 will give 240 which is 1111 0000 |
6 | >> Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. Example − $a >> 2 will give 15 which is 0000 1111 |
Perl Logical Operators
There are following logical operators supported by Perl language. Assume variable $a holds true and variable $b holds false then −
Sr.No. | Operator & Description |
---|---|
1 | and Called Logical AND operator. If both the operands are true then then condition becomes true. Example − ($a and $b) is false. |
2 | && C-style Logical AND operator copies a bit to the result if it exists in both operands. Example − ($a && $b) is false. |
3 | or Called Logical OR Operator. If any of the two operands are non zero then then condition becomes true. Example − ($a or $b) is true. |
4 | || C-style Logical OR operator copies a bit if it exists in eather operand. Example − ($a || $b) is true. |
5 | not Called Logical NOT Operator. Use to reverses the logical state of its operand. If a condition is true then Logical NOT operator will make false. Example − not($a and $b) is true. |
Quote-like Operators
There are following Quote-like operators supported by Perl language. In the following table, a {} represents any pair of delimiters you choose.
Sr.No. | Operator & Description |
---|---|
1 | q{ } Encloses a string with-in single quotes Example − q{abcd} gives 'abcd' |
2 | qq{ } Encloses a string with-in double quotes Example − qq{abcd} gives "abcd" |
3 | qx{ } Encloses a string with-in invert quotes Example − qx{abcd} gives `abcd` |
Miscellaneous Operators
There are following miscellaneous operators supported by Perl language. Assume variable a holds 10 and variable b holds 20 then −
Sr.No. | Operator & Description |
---|---|
1 | . Binary operator dot (.) concatenates two strings. Example − If $a = "abc", $b = "def" then $a.$b will give "abcdef" |
2 | x The repetition operator x returns a string consisting of the left operand repeated the number of times specified by the right operand. Example − ('-' x 3) will give ---. |
3 | .. The range operator .. returns a list of values counting (up by ones) from the left value to the right value Example − (2..5) will give (2, 3, 4, 5) |
4 | ++ Auto Increment operator increases integer value by one Example − $a++ will give 11 |
5 | -- Auto Decrement operator decreases integer value by one Example − $a-- will give 9 |
6 | -> The arrow operator is mostly used in dereferencing a method or variable from an object or a class name Example − $obj->$a is an example to access variable $a from object $obj. |
Perl Operators Precedence
The following table lists all operators from highest precedence to lowest.
left terms and list operators (leftward) left -> nonassoc ++ -- right ** right ! ~ \ and unary + and - left =~ !~ left * / % x left + - . left << >> nonassoc named unary operators nonassoc < > <= >= lt gt le ge nonassoc == != <=> eq ne cmp ~~ left & left | ^ left && left || // nonassoc .. ... right ?: right = += -= *= etc. left , => nonassoc list operators (rightward) right not left and left or xor