运算符是任何编程语言的主要组成部分。操作符允许程序员对操作数执行不同类型的操作。在Perl中,操作符符号对于不同类型的操作数是不同的(比如标量和字符串)。一些已经在Perl操作符集- 1中讨论过的操作符。本文将讨论其余的运算符:
- 引号及类引号运算
- 字符串操作运算符
- 范围运算符
- 自动增量和减量运算符
- 箭头运算符
引号及类引号运算
在这些运算符中, {}将代表用户选择的一对定界符。在此类别中, 有以下三个运算符:
- q {}:它将字符串用单引号引起来(“)并且不能插值字符串变量。例如:q {geek}表示” geek”。
- qq {}:它将字符串用双引号引起来(“”)并可以插入字符串变量。例如:qq {geek}给出” geek”。
- qx {}:它将用反引号引起来的字符串(“).例如:qq {geek}给出`geek`。
例子:
# Perl program to demonstrate the Quote
# Like Operators
#!/usr/local/bin/perl
# taking a string variable
$g = "Geek" ;
# using single quote Operators
# this operator will not
# interpolate the string variable
$r = q{$g} ;
print "Value of g is = $r\n" ;
# using double quote Operators
# this operator will interpolate
# the string variable
$r = qq{$g} ;
print "Value of g is = $r\n" ;
# Executing unix date command
$d = qx{date} ;
print "Value of qx{date} = $d" ;
输出如下:
Value of g is = $g
Value of g is = Geek
Value of qx{date} = Sun Aug 12 14:19:43 UTC 2018
字符串操作运算符
字符串是标量变量, 以($)登录Perl。字符串由用户在单引号内定义(“)或双引号(“”)。 Perl中有不同类型的字符串运算符, 如下所示:
- 串联运算符(。):Perl字符串与一个点(。)符号。在Perl中使用Dot(。)符号代替(+)符号。
- 重复运算符(x):x运算符在其左侧接受一个字符串, 在其右侧接受一个数字。它将返回在左侧的字符串, 其重复次数是在右侧的值的次数。
例子:
# Perl program to demonstrate the
# string operators
#!/usr/bin/perl
# Input first string
$first_string = "Geeks" ;
# Input second string
$second_string = "forGeeks" ;
# Implement Concatination operator(.)
$concat_string = $first_string . $second_string ;
# displaying concatination string result
print "Result of Concatenation Operator = $concat_string\n" ;
# Input a string
$string = "srcmini " ;
# Using Repetation operator(x)
$str_result = $string x 4;
# Display output
# print string 4 times
print "Result of Repetation Operator = $str_result" ;
输出如下:
Result of Concatenation Operator = srcmini
Result of Repetation Operator = srcmini srcmini srcmini srcmini
注意:要了解有关Perl中的字符串运算符的更多信息, 可以参考Perl字符串运算符文章。
范围运算符(..)
在Perl中, 范围运算符用于创建指定元素的指定序列范围。因此, 此运算符用于创建指定的序列范围, 其中起始元素和结束元素都将包括在内。例如, 7 .. 10将创建一个类似于7、8、9、10的序列。
例子:
# Perl program to demonstrate the
# Range operators
#!/usr/bin/perl
# using range operator
@res = (1..4);
# Display output
print "Result of Range Operator = @res" ;
输出如下:
Result of Range Operator = 1 2 3 4
自动递增和自动递减运算符
自动增量(++):递增整数值。当放置在变量名称(也称为预增量运算符)之前时, 其值会立即增加。例如, ++ $ x。当将其放在变量名之后(也称为后递增运算符)时, 其值将暂时保留, 直到执行该语句为止, 并且在下一个语句执行之前对其进行更新。例如, $ x ++。
自动递减运算符(–):减少整数值。当放置在变量名称(也称为预减运算符)之前时, 其值将立即减小。例如, – $ x。当将其放在变量名(也称为后减运算符)之后时, 其值将暂时保留, 直到执行该语句为止, 并且在下一个语句执行之前对其进行更新。例如, $ x–。
注意:递增和递减运算符被称为一元运算符, 因为它们使用单个操作数。
例子:
# Perl program to demonstrate the Auto
# Increment and Decrement Operator
#!/usr/local/bin/perl
# taking a variable
$g = 10;
# using pre Increment
$res = ++ $g ;
print "Value of res is = $res\n" ;
print "Value of g is = $g\n" ;
# taking a variable
$g1 = 15;
# using post Increment
$res1 = $g1 ++;
print "Value of res1 is = $res1\n" ;
print "Value of g1 is = $g1\n" ;
# taking a variable
$g2 = 20;
# using pre Decrement
$res2 = -- $g2 ;
print "Value of res2 is = $res2\n" ;
print "Value of g2 is = $g2\n" ;
# taking a variable
$g3 = 25;
# using post Decrement
$res3 = $g3 --;
print "Value of res3 is = $res3\n" ;
print "Value of g3 is = $g3\n" ;
输出如下:
Value of res is = 11
Value of g is = 11
Value of res1 is = 15
Value of g1 is = 16
Value of res2 is = 19
Value of g2 is = 19
Value of res3 is = 25
Value of g3 is = 24
箭头运算符(->)
此运算符用于从类或对象中取消引用变量或方法。示例:$ ob-> $ x是从对象$ ob访问变量$ x的示例。通常, 此运算符用作对哈希或数组的引用, 以访问哈希或数组的元素。
例子:
# Perl program to demonstrate the Arrow Operator
#!/usr/local/bin/perl
use strict;
use warnings;
# reference to array
my $arr1 = [4, 5, 6];
# array inside array
my $arr2 = [4, 5, [6, 7]];
# reference to hash
my $has1 = { 'a' =>1, 'b' =>2};
# hash inside hash
my $has2 = { 'a' =>1, 'b' =>2, 'c' =>[1, 2], 'd' =>{ 'x' =>3, 'y' =>4}};
# using arrow operator
print "$arr1->[0]\n" ;
print "$arr2->[1]\n" ;
print "$arr2->[2][0]\n" ;
print "$has2->{'a'}\n" ;
print $has2 ->{ 'd' }->{ 'x' }, "\n" ;
print $has2 ->{ 'c' }->[0], "\n" ;
输出如下:
4
5
6
1
3
1
要记住的要点:
- 操作员关联性:它用于确定方程式或表达式是从左到右还是从右到左求值。评估顺序非常重要。有时, 从双方的角度看, 它们可能都相同, 但可能会产生很大的差异。
- Perl Arity:Arity可以定义为操作员在其上进行操作的操作数的数量。
- 空运算符:这些运算符对零操作数进行运算。
- 一元运算符:这些运算符对一个操作数进行运算。
- 二进制运算符:这些运算符对两个操作数进行运算。
- 列表运算符:这些运算符对操作数列表进行运算。
- Perl固定性:可以将其定义为运算符相对于其操作数的位置。
- 中缀运算符:这些运算符位于其操作数之间。例如5 + 8, 这里, +运算符位于操作数5和8之间
- 前缀运算符:这些运算符位于其操作数之前。例如, ! $ g – 7, 这里!和–运算符位于操作数$ a和3之前。
- 后缀运算符:这些运算符出现在其操作数之后。例如, $ y ++, 这里, ++运算符出现在操作数$ x之后。
- 环行符运算符:这些运算符将其操作数包含为散列构造函数和引号运算符。例如, (qq [..])
- 后缀运算符:这些运算符遵循某些操作数, 并围绕某些操作数。例如, $ hash {$ y}
运算符优先级和关联性表
操作符 | 优先顺序 | 关联性 |
---|---|---|
-> | 箭头运算符 | 左到右 |
++, – | 递增, 递减 | 非关联 |
** | 指数 | 右到左 |
!, +, -, ~ | 不, 一元加, 一元减, 补码 | 右到左 |
!=, ~= | 不等于, 补码等于 | 左到右 |
*, /, % | 乘, 除, 模 | 左到右 |
<<, >> | 移位运算符 | 左到右 |
<>, <=, > = | 比较, 小于等于, 右小于等于 | 非关联 |
& | 按位与 | 左到右 |
|, ^ | 按位或, EX-OR | 左到右 |
&& | 和 | 左到右 |
|| | OR | 左到右 |
.. | 范围运算符 | 非关联 |
* =, / =, + =, -= | 等于, 除以等于 | 右到左 |