Perl - Operators
What is an operator?
Simple answer can be
given using 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 on
all operators one by one.
Perl Arithmetic Operators:
Assume variable $a
holds 10 and variable $b holds 20 then:
Operator
|
Description
|
Example
|
+
|
Addition - Adds
values on either side of the operator
|
$a + $b will give
30
|
-
|
Subtraction -
Subtracts right hand operand from left hand operand
|
$a - $b will give
-10
|
*
|
Multiplication -
Multiplies values on either side of the operator
|
$a * $b will give
200
|
/
|
Division -
Divides left hand operand by right hand operand
|
$b / $a will give
2
|
%
|
Modulus - Divides
left hand operand by right hand operand and returns remainder
|
$b % $a will give
0
|
**
|
Exponent - Performs
exponential (power) calculation on operators
|
$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 following numeric equality operators:
Operator
|
Description
|
Example
|
==
|
Checks if the
value of two operands are equal or not, if yes then condition becomes true.
|
($a == $b) is not
true.
|
!=
|
Checks if the
value of two operands are equal or not, if values are not equal then
condition becomes true.
|
($a != $b) is
true.
|
<=>
|
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.
|
($a <=> $b)
returns -1.
|
>
|
Checks if the
value of left operand is greater than the value of right operand, if yes then
condition becomes true.
|
($a > $b) is
not true.
|
<
|
Checks if the
value of left operand is less than the value of right operand, if yes then
condition becomes true.
|
($a < $b) is
true.
|
>=
|
Checks if the
value of left operand is greater than or equal to the value of right operand,
if yes then condition becomes true.
|
($a >= $b) is
not true.
|
<=
|
Checks if the
value of left operand is less than or equal to the value of right operand, if
yes then condition becomes true.
|
($a <= $b) is
true.
|
Below is a list of
equity operators. Assume variable $a holds "abc" and variable $b
holds "xyz" then, lets check following string equality operators:
Operator
|
Description
|
Example
|
lt
|
Returns true if
the left argument is stringwise less than the right argument.
|
($a lt $b) is
true.
|
gt
|
Returns true if
the left argument is stringwise greater than the right argument.
|
($a gt $b) is
false.
|
le
|
Returns true if
the left argument is stringwise less than or equal to the right argument.
|
($a le $b) is
true.
|
ge
|
Returns true if
the left argument is stringwise greater than or equal to the right argument.
|
($a ge $b) is
false.
|
eq
|
Returns true if
the left argument is stringwise equal to the right argument.
|
($a eq $b) is
false.
|
ne
|
Returns true if
the left argument is stringwise not equal to the right argument.
|
($a ne $b) is
true.
|
cmp
|
Returns -1, 0, or
1 depending on whether the left argument is stringwise less than, equal to,
or greater than the right argument.
|
($a cmp $b) is
-1.
|
Perl Assignment Operators:
Assume variable $a
holds 10 and variable $b holds 20 then:
Operator
|
Description
|
Example
|
=
|
Simple assignment
operator, Assigns values from right side operands to left side operand
|
$c = $a + $b will
assigne value of $a + $b into $c
|
+=
|
Add AND
assignment operator, It adds right operand to the left operand and assign the
result to left operand
|
$c += $a is
equivalent to $c = $c + $a
|
-=
|
Subtract AND
assignment operator, It subtracts right operand from the left operand and
assign the result to left operand
|
$c -= $a is
equivalent to $c = $c - $a
|
*=
|
Multiply AND
assignment operator, It multiplies right operand with the left operand and assign
the result to left operand
|
$c *= $a is
equivalent to $c = $c * $a
|
/=
|
Divide AND
assignment operator, It divides left operand with the right operand and
assign the result to left operand
|
$c /= $a is
equivalent to $c = $c / $a
|
%=
|
Modulus AND assignment
operator, It takes modulus using two operands and assign the result to left
operand
|
$c %= $a is
equivalent to $c = $c % a
|
**=
|
Exponent AND
assignment operator, Performs exponential (power) calculation on operators
and assign value to the left operand
|
$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
Operator
|
Description
|
Example
|
&
|
Binary AND
Operator copies a bit to the result if it exists in both operands.
|
($a & $b)
will give 12 which is 0000 1100
|
|
|
Binary OR
Operator copies a bit if it exists in eather operand.
|
($a | $b) will
give 61 which is 0011 1101
|
^
|
Binary XOR
Operator copies the bit if it is set in one operand but not both.
|
($a ^ $b) will
give 49 which is 0011 0001
|
~
|
Binary Ones
Complement Operator is unary and has the efect of 'flipping' bits.
|
(~$a ) will give
-61 which is 1100 0011 in 2's complement form due to a signed binary number.
|
<<
|
Binary Left Shift
Operator. The left operands value is moved left by the number of bits
specified by the right operand.
|
$a << 2
will give 240 which is 1111 0000
|
>>
|
Binary Right
Shift Operator. The left operands value is moved right by the number of bits
specified by the right operand.
|
$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:
Operator
|
Description
|
Example
|
and
|
Called Logical
AND operator. If both the operands are true then then condition becomes true.
|
($a and $b) is
false.
|
&&
|
C-style Logical
AND operator copies a bit to the result if it exists in both operands.
|
($a &&
$b) is false.
|
or
|
Called Logical OR
Operator. If any of the two operands are non zero then then condition becomes
true.
|
($a or $b) is true.
|
||
|
C-style Logical
OR operator copies a bit if it exists in eather operand.
|
($a || $b) is
true.
|
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.
|
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.
Operator
|
Description
|
Example
|
q{ }
|
Encloses a string
with-in single quotes
|
q{abcd} gives
'abcd'
|
qq{ }
|
Encloses a string
with-in double quotes
|
qq{abcd} gives "abcd"
|
qx{ }
|
Encloses a string
with-in invert quotes
|
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:
Operator
|
Description
|
Example
|
.
|
Binary operator
dot (.) concatenates two strings.
|
If
$a="abc", $b="def" then $a.$b will give
"abcdef"
|
x
|
The repetition operator
x returns a string consisting of the left operand repeated the number of
times specified by the right operand.
|
('-' x 3) will
give ---.
|
..
|
The range
operator .. returns a list of values counting (up by ones) from the left
value to the right value
|
(2..5) will give
(2, 3, 4, 5)
|
++
|
Auto Increment
operator increases integer value by one
|
$a++ will give 11
|
--
|
Auto Decrement
operator decreases integer value by one
|
$a-- will give 9
|
->
|
The arrow
operator is mostly used in dereferencing a method or variable from an object
or a class name
|
$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
Comments
Post a Comment