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 −
OperatorDescriptionExample
+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 the following numeric equality operators −
OperatorDescriptionExample
==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:
OperatorDescriptionExample
ltReturns true if the left argument is stringwise less than the right argument.($a lt $b) is true.
gtReturns true if the left argument is stringwise greater than the right argument.($a gt $b) is false.
leReturns true if the left argument is stringwise less than or equal to the right argument.($a le $b) is true.
geReturns true if the left argument is stringwise greater than or equal to the right argument.($a ge $b) is false.
eqReturns true if the left argument is stringwise equal to the right argument.($a eq $b) is false.
neReturns true if the left argument is stringwise not equal to the right argument.($a ne $b) is true.
cmpReturns -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 −
OperatorDescriptionExample
=Simple assignment operator, Assigns values from right side operands to left side operand$c = $a + $b will assigned 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
OperatorDescriptionExample
&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 −
OperatorDescriptionExample
andCalled 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.
orCalled 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.
notCalled 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.
OperatorDescriptionExample
q{ }Encloses a string with-in single quotesq{abcd} gives 'abcd'
qq{ }Encloses a string with-in double quotesqq{abcd} gives "abcd"
qx{ }Encloses a string with-in invert quotesqx{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 −
OperatorDescriptionExample
.Binary operator dot (.) concatenates two strings.If $a="abc", $b="def" then $a.$b will give "abcdef"
xThe 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

0 Comment:

Đăng nhận xét

Thank you for your comments!