Perl - 運算子



什麼是運算子?

可以使用表示式4 + 5 等於 9給出簡單的答案。這裡 4 和 5 稱為運算元,+ 稱為運算子。Perl 語言支援許多運算子型別,但以下是重要且最常用的運算子列表:

  • 算術運算子
  • 相等運算子
  • 邏輯運算子
  • 賦值運算子
  • 按位運算子
  • 邏輯運算子
  • 類引號運算子
  • 雜項運算子

讓我們逐一看看所有運算子。

Perl 算術運算子

假設變數 $a 包含 10,變數 $b 包含 20,則以下是 Perl 算術運算子:

顯示示例

序號 運算子 & 描述
1

+ (加法)

將運算子兩側的值相加

示例 - $a + $b 將得到 30

2

- (減法)

從左運算元中減去右運算元

示例 - $a - $b 將得到 -10

3

* (乘法)

將運算子兩側的值相乘

示例 - $a * $b 將得到 200

4

/ (除法)

將左運算元除以右運算元

示例 - $b / $a 將得到 2

5

% (模)

將左運算元除以右運算元並返回餘數

示例 - $b % $a 將得到 0

6

** (指數)

對運算子執行指數(冪)計算

示例 - $a**$b 將得到 10 的 20 次冪

Perl 相等運算子

這些也稱為關係運算符。假設變數 $a 包含 10,變數 $b 包含 20,那麼讓我們檢查以下數值相等運算子:

顯示示例

序號 運算子 & 描述
1

== (等於)

檢查兩個運算元的值是否相等,如果相等則條件為真。

示例 - ($a == $b) 為假。

2

!= (不等於)

檢查兩個運算元的值是否相等,如果值不相等則條件為真。

示例 - ($a != $b) 為真。

3

<=>

檢查兩個運算元的值是否相等,並根據左引數在數值上是否小於、等於或大於右引數返回 -1、0 或 1。

示例 - ($a <=> $b) 返回 -1。

4

> (大於)

檢查左運算元的值是否大於右運算元的值,如果大於則條件為真。

示例 - ($a > $b) 為假。

5

< (小於)

檢查左運算元的值是否小於右運算元的值,如果小於則條件為真。

示例 - ($a < $b) 為真。

6

>= (大於或等於)

檢查左運算元的值是否大於或等於右運算元的值,如果大於或等於則條件為真。

示例 - ($a >= $b) 為假。

7

<= (小於或等於)

檢查左運算元的值是否小於或等於右運算元的值,如果小於或等於則條件為真。

示例 - ($a <= $b) 為真。

以下是字串相等運算子的列表。假設變數 $a 包含 "abc",變數 $b 包含 "xyz",那麼讓我們檢查以下字串相等運算子:

顯示示例

序號 運算子 & 描述
1

lt

如果左引數在字串上小於右引數,則返回真。

示例 - ($a lt $b) 為真。

2

gt

如果左引數在字串上大於右引數,則返回真。

示例 - ($a gt $b) 為假。

3

le

如果左引數在字串上小於或等於右引數,則返回真。

示例 - ($a le $b) 為真。

4

ge

如果左引數在字串上大於或等於右引數,則返回真。

示例 - ($a ge $b) 為假。

5

eq

如果左引數在字串上等於右引數,則返回真。

示例 - ($a eq $b) 為假。

6

ne

如果左引數在字串上不等於右引數,則返回真。

示例 - ($a ne $b) 為真。

7

cmp

根據左引數在字串上是否小於、等於或大於右引數返回 -1、0 或 1。

示例 - ($a cmp $b) 為 -1。

Perl 賦值運算子

假設變數 $a 包含 10,變數 $b 包含 20,則以下是 Perl 中可用的賦值運算子及其用法:

顯示示例

序號 運算子 & 描述
1

=

簡單賦值運算子,將右側運算元的值賦給左側運算元

示例 - $c = $a + $b 將 $a + $b 的值賦給 $c

2

+=

加並賦值運算子,將右運算元加到左運算元上並將結果賦給左運算元

示例 - $c += $a 等價於 $c = $c + $a

3

-=

減並賦值運算子,從左運算元中減去右運算元並將結果賦給左運算元

示例 - $c -= $a 等價於 $c = $c - $a

4

*=

乘並賦值運算子,將右運算元乘以左運算元並將結果賦給左運算元

示例 - $c *= $a 等價於 $c = $c * $a

5

/=

除並賦值運算子,將左運算元除以右運算元並將結果賦給左運算元

示例 - $c /= $a 等價於 $c = $c / $a

6

%=

模並賦值運算子,使用兩個運算元取模並將結果賦給左運算元

示例 - $c %= $a 等價於 $c = $c % a

7

**=

指數並賦值運算子,對運算子執行指數(冪)計算並將值賦給左運算元

示例 - $c **= $a 等價於 $c = $c ** $a

Perl 按位運算子

按位運算子作用於位並執行逐位運算。假設 $a = 60;和 $b = 13;現在以二進位制格式它們將如下所示:

$a = 0011 1100

$b = 0000 1101

-----------------

$a&$b = 0000 1100

$a|$b = 0011 1101

$a^$b = 0011 0001

~$a  = 1100 0011

Perl 語言支援以下按位運算子,假設 $a = 60;和 $b = 13

顯示示例

序號 運算子 & 描述
1

&

二進位制 AND 運算子如果位存在於兩個運算元中,則將其複製到結果中。

示例 - ($a & $b) 將得到 12,即 0000 1100

2

|

二進位制 OR 運算子如果位存在於任一運算元中,則將其複製。

示例 - ($a | $b) 將得到 61,即 0011 1101

3

^

二進位制 XOR 運算子如果位在一個運算元中設定但在另一個運算元中未設定,則將其複製。

示例 - ($a ^ $b) 將得到 49,即 0011 0001

4

~

二進位制一補碼運算子是一元的,其作用是“翻轉”位。

示例 - (~$a ) 將得到 -61,由於是有符號二進位制數,因此在 2 的補碼形式中為 1100 0011。

5

<<

二進位制左移運算子。左運算元的值向左移動由右運算元指定的位數。

示例 - $a << 2 將得到 240,即 1111 0000

6

>>

二進位制右移運算子。左運算元的值向右移動由右運算元指定的位數。

示例 - $a >> 2 將得到 15,即 0000 1111

Perl 邏輯運算子

Perl 語言支援以下邏輯運算子。假設變數 $a 包含 true,變數 $b 包含 false,則:

顯示示例

序號 運算子 & 描述
1

and

稱為邏輯 AND 運算子。如果兩個運算元都為真,則條件為真。

示例 - ($a and $b) 為假。

2

&&

C 風格的邏輯 AND 運算子如果位存在於兩個運算元中,則將其複製到結果中。

示例 - ($a && $b) 為假。

3

or

稱為邏輯 OR 運算子。如果兩個運算元中的任何一個非零,則條件為真。

示例 - ($a or $b) 為真。

4

||

C 風格的邏輯 OR 運算子如果位存在於任一運算元中,則將其複製。

示例 - ($a || $b) 為真。

5

not

稱為邏輯 NOT 運算子。用於反轉其運算元的邏輯狀態。如果條件為真,則邏輯 NOT 運算子將使其為假。

示例 - not($a and $b) 為真。

類引號運算子

Perl 語言支援以下類引號運算子。在下表中,{} 代表您選擇的任何分隔符對。

顯示示例

序號 運算子 & 描述
1

q{ }

用單引號括起來一個字串

示例 - q{abcd} 得到 'abcd'

2

qq{ }

用雙引號括起來一個字串

示例 - qq{abcd} 得到 "abcd"

3

qx{ }

用反引號括起來一個字串

示例 - qx{abcd} 得到 `abcd`

雜項運算子

Perl 語言支援以下雜項運算子。假設變數 a 包含 10,變數 b 包含 20,則:

顯示示例

序號 運算子 & 描述
1

.

二元運算子點 (.) 連線兩個字串。

示例 - 如果 $a = "abc",$b = "def",則 $a.$b 將得到 "abcdef"

2

x

重複運算子 x 返回一個字串,該字串由左運算元重複由右運算元指定的次數。

示例 − ('-' x 3) 將得到 ---。

3

..

範圍運算子 .. 返回一個從左側值到右側值(遞增1)的數值列表。

示例 − (2..5) 將得到 (2, 3, 4, 5)

4

++

自動遞增運算子將整數值增加1。

示例 − $a++ 將得到 11

5

--

自動遞減運算子將整數值減少1。

示例 − $a-- 將得到 9

6

->

箭頭運算子主要用於從物件或類名中取消引用方法或變數。

示例 − $obj->$a 是從物件 $obj 中訪問變數 $a 的示例。

Perl 運算子優先順序

下表列出了所有運算子,從最高優先順序到最低優先順序。

顯示示例

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
廣告

© . All rights reserved.