Perl programming session 5 operators in perl
date post
12-Apr-2017Category
Education
view
36download
2
Embed Size (px)
Transcript of Perl programming session 5 operators in perl
Session 5 Operators in PerlRAM N SANGWAN
WWW.RNSANGWAN.COM
1
Arithmetic
Perl operators are the same as in C and Java
these are only good for numbers
but beware:$b = "3" + "5";
print $b, "\n"; # prints the number 8
if a string can be interpreted as a number givenarithmetic operators, it will be
what is the value of $b?:$b = "3" + "five" + 6?
Perl semantics can be tricky to completely understand
Operators - Maths
The usual suspects: + - * / %
$total = $subtotal * (1 + $tax / 100.0);
Exponentiation: **
$cube = $value ** 3;
$cuberoot = $value ** (1.0/3);
Bit-level Operations
left-shift: $val = $bits >> 8;
Operators - Assignments
As usual: = += -= *= /= **= =$value *= 5;
$longword
Numeric Operators
Operator Associativity
++ -- none
unary - right
** right
* / % left
binary + - left
++ and have the highest precedence.
Arithmetic in Perl
6
$a = 1 + 2; # Add 1 and 2 and store in $a
$a = 3 - 4; # Subtract 4 from 3 and store in $a
$a = 5 * 6; # Multiply 5 and 6
$a = 7 / 8; # Divide 7 by 8 to give 0.875
$a = 9 ** 10; # Nine to the power of 10, that is, 910
$a = 5 % 2; # Remainder of 5 divided by 2
++$a; # Increment $a and then return it
$a++; # Return $a and then increment it
--$a; # Decrement $a and then return it
$a--; # Return $a and then decrement it
Examples
4 % 2 0
5 / 2 2.5 (5 and 2 are coerced from integers toreals).
$total++ * 3
$a ** 2
$b / $ c / 2
Important. The order of evaluation of operands ofoperators is unspecified. This is left for the compiler todecide. Ex: $x++ * $x--
Operators - Boolean
Boolean (against bits in each byte) Usual operators: & |
Exclusive-or: ^
Bitwise Negation: ~
$picture = $backgnd & ~$mask | $image;
Boolean Assignment &= |= ^=
$picture &= $mask;
Operators-Logical (expressions)
&& And operator
| | Or operator
! Not operator
Operators - Short Circuit Operators
expr1 && expr2
expr1 is evaluated.
expr2 is only evaluated if expr1 was true.
expr1 || expr2
expr1 is evaluated.
expr2 is only evaluated if expr1 was false.
Examples
open () || die couldnt open file;
$debug && print users name is $name\n;
11
Equality Operators for Strings
Equality/ Inequality : eq and ne
$language = Perl;
if ($language == Perl) ... # Wrong!
if ($language eq Perl) ... #Correct
Use eq / ne rather than == / != for strings
12
Relational Operators for Strings
Greater than Numeric : > String : gt
Greater than or equal to Numeric : >= String : ge
Less than Numeric : < String : lt
Less than or equal to Numeric :
13
String Functions
Convert to upper case $name = uc($name);
Convert only the first char to upper case $name = ucfirst($name);
Convert to lower case $name = lc($name);
Convert only the first char to lower case $name = lcfirst($name);
14
A String Example Program
Convert to upper case $name = uc($name);
Convert only the first char to upper case $name = ucfirst($name);
Convert to lower case $name = lc($name);
Convert only the first char to lower case $name = lcfirst($name);
#!/usr/bin/perl$var1 = larry;$var2 = moe;$var3 = shemp;Output: Larry, MOE, sHEMP
15
A String Example Program
#!/usr/local/bin/perl
$var1 = larry;
$var2 = moe;
$var3 = shemp;
print ucfirst($var1); # Prints 'Larry'
print uc($var2); # Prints 'MOE'
print lcfirst(uc($var3)); # Prints 'sHEMP'
String Operators
String Catenation (.) Append two strings together.Happy . Birthday Happy Birthday.
$str . Holidays Happy Holidays.
The operands are not effected by (.)
Repetition operator (x)Beat OU! x 3 Beat OU! Beat OU! Beat OU!
What about?Happy . Birthday! x 2
Happy Birthday! Birthday!
Chop and Chomp
Chop removes the last character in a string.chop(apples) apple
If $a, $b, and $c are a, an, and ant, then chop($a, $b, $c) a an
Chomp removes the ending input record separator(e.g. newline) in a string. If string does not end with an input record separator, then
chomp does nothing to the string and returns 0.
index and rindex
index searches for the starting position of asubstring.
rindex same as index except search is donefrom right to left.
Examples: index(apples, pp) returns 1
rindex(apples, pp) returns 1
index(apples, p) returns 1
rindex(apples, p) returns 2
index(apples, q) returns -1
substr
substr extracts a substring
The way to call it is: substr(string, position, length)
Examples: substr(fruit juice, 0, 3) returns fru
substr(fruit juice, 3, 5) returns it ju
substr(fruit juice, -3, 3) returns ice
join
Like (.) but appends several strings separated by adeliminator.
The way to call it is:
join Expression, List
Example: $month = 09, $day = 01, $year = 05join /, $month, $day, $year 09/01/05.
join /, $month, $day, 2005 ??
Assignments
Simple assignment operators (=)$x = 2;
$average = $sum / $total;
$x = $y = $b = 2;
$result = 17 * ($sum = $x + $y);
chomp($str = $str1. $str1);
Compound assignment operators (=)$sum += $new_value;
$str .= ing;
$result **= 4;
numeric vs. string comparisons
#!/usr/bin/perl
$a = "123";
$b = "1234";
$c = "124";
if ($b > $c) {
print "$b > $c\n";
} else {
print "$b
Quoting special characters
23
\| # Vertical bar
\[ # An open square bracket
\) # A closing parenthesis
\* # An asterisk
\^ # A carat symbol
\/ # A slash
\\ # A backslash
Alternatives and parentheses
24
jelly|cream # Either jelly or cream
(eg|le)gs # Either eggs or legs
(da)+ # Either da or dada or dadada or...
Another Example
25
#!/usr/bin/perl
my @lines = ("Boston is cold.",
"I like the Boston Red Sox.",
"Boston drivers make me see red!" );
foreach my $line (@lines)
{
if ($line =~ /Boston.*red/i )
{
print "$line\n";
}
}
Thankyou
26