Skip to main content

Perl - Operators



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

Popular posts from this blog

Hard dependency with ip address Oracle RAC Cluster.

Command error out due to hard dependency with ip address [-Node1]/app/grid/oracle/product/11.2.0/grid/bin>./crsctl relocate resource RDBMS_DB -n Node2 CRS-2527: Unable to start 'RDBMS_DB' because it has a 'hard' dependency on 'sDB' CRS-2525: All instances of the resource 'sDB' are already running; relocate is not allowed because the force option was not specified CRS-4000: Command Relocate failed, or completed with errors. [-Node1]/app/grid/oracle/product/11.2.0/grid/bin>./crsctl relocate resource sDB  -n Node2 CRS-2529: Unable to act on 'DB' because that would require stopping or relocating 'LISTENER_DB', but the force option was not specified CRS-4000: Command Relocate failed, or completed with errors. [-Node1]/app/grid/oracle/product/11.2.0/grid/bin>./crsctl relocate resource LISTENER_DB  -n Node2 CRS-2527: Unable to start 'LISTENER_DB' because it has a 'hard' dependency on 'sD...

19C NID ( Rename Database)

 [oracle@localhost ~]$ nid DBNEWID: Release 19.0.0.0.0 - Production on Thu Dec 23 00:05:36 2021 Copyright (c) 1982, 2019, Oracle and/or its affiliates.  All rights reserved. Keyword     Description                    (Default) ---------------------------------------------------- TARGET      Username/Password              (NONE) DBNAME      New database name              (NONE) LOGFILE     Output Log                     (NONE) REVERT      Revert failed change           NO SETNAME     Set a new database name only   NO APPEND      Append to output log           NO HELP        Displays these messages    ...

ORA-01017/ORA-28000 with AUDIT_TRAIL

With default profile in Oracle 11g, accounts are automatically locked 1 day ( PASSWORD_LOCK_TIME ) after 10 failed login attempt ( FAILED_LOGIN_ATTEMPTS ): SQL > SET lines 200 SQL > SET pages 200 SQL > SELECT * FROM dba_profiles WHERE PROFILE = 'DEFAULT' ORDER BY resource_name; PROFILE                         RESOURCE_NAME                      RESOURCE LIMIT ------------------------------ -------------------------------- -------- ---------------------------------------- DEFAULT                         COMPOSITE_LIMIT                 ...