成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Perl操作符中綁定和乘號操作符用法解析

開發 架構
Perl操作符的概念大家應該有所了解,這里向大家介紹一下綁定Perl操作符和乘號Perl操作符,相信通過本文的介紹你對這兩種操作符有一定的認識。

本文和大家重點討論一下綁定Perl操作符和乘號Perl操作符,綁定Perl操作符中雙目=~把一個字串和一個模式匹配、替換或者轉換綁定在一起,并且Perl提供類似C的Perl操作符(乘)、/(除)、和%(模除)。

綁定Perl操作符

雙目=~把一個字串和一個模式匹配、替換或者轉換綁定在一起。要不然這些操作會搜索或修改包含在$_(缺省變量)里面的字串。你想綁定的字串放在左邊,而Perl操作符本身放在右邊。返回值標識右邊的Perl操作符的成功或者失敗,因為綁定Perl操作符本身實際上不做任何事情。

如果右邊的參數是一個表達式而不是模式匹配、子過程或者轉換,那運行時該表達式會被解釋成一個搜索模式。也就是說,$_=~$pat等效于$_=~/$pat/。這樣做要比明確搜索效率低,因為每次計算完表達式后都必須檢查模式以及可能還要重新編譯模式。你可以通過使用qr//(引起正則表達式)Perl操作符預編譯最初的模式的方法來避免重新編譯。

雙目!~類似=~Perl操作符,只是返回值是=~的對應返回值的邏輯非。下面的表達式功能上是完全一樣的:

$string!~/pattern/
not$string=~/pattern/
我們說返回值標識成功,但是有許多種成功。替換返回成功替換的數量,轉換也一樣。(實際上,轉換Perl操作符常用于字符計數。)因為任何非零值都是真,所以所有的都對。最吸引人的真值類型是模式的列表賦值:在列表環境下,模式匹配可以返回和模式里圓括弧相匹配的子字串。不過,根據列表賦值的規則,如果有任何東西匹配并且賦了值,列表賦值本身將返回真,否則返回假。因此,有時候你會看到這樣的東西:

if(($k,$v)=$string=~m/(\w+)=(\w*)/){
print"KEY$kVALUE$v\n";
}
讓我們分解這個例子。=~的優先級比=高,因此首先計算=~。=~把字串$string綁定與右邊的模式進行匹配,右邊是掃描你的字串里看起來象KEY=VALUES這樣的東西。這是在列表環境里,因為它是在一個列表賦值的右邊。如果匹配了模式,它返回一個列表并賦值給$k和$v。列表賦值本身是在標量環境,所以它返回2--賦值語句右邊的數值的個數。而2正好又是真——因為標量環境也是一個布爾環境。當匹配失敗,沒有賦值發生,則返回零,是假。

關于模式規則的更多內容,參閱第五章,模式匹配。

乘號Perl操作符

Perl提供類似C的Perl操作符(乘)、/(除)、和%(模除)。和/的運行和你預料的一樣,對其兩個操作數進行乘或除。除法是以浮點數進行的,除非你用了integer用法模塊。

%Perl操作符在用整數除法計算余數前,把它的操作數轉換為整數。(不過,如果必要,它會以浮點進行除法,這樣你的操作數在大多數32位機器上最多可以有(以浮點)15位。)假設你的兩個操作數叫$b和$a。如果$b是正數,那么$a%$b的結果是$a減去$b不大于$a的最大倍數(也就意味著結果總是在范圍0..$b-1之間)。如果$b是負數,那么$a%$b的結果是$a減去$b不小于$a的最小倍數(意味著結果介于$b+1..0之間)。

當useinteger在范圍里時,%直接給你由你的C編譯器實現的模除Perl操作符。這個Perl操作符對負數定義得不是很好,但是執行得更快。

雙目x是復制Perl操作符。實際上,它是兩個Perl操作符,在標量環境里,它返回一個由左操作數重復右操作數的次數連接起來的字串。(為了向下兼容,如果左操作數沒有位于圓括弧中,那么它在列表環境里也這樣處理。)

print'-'x80;#打印一行劃線
print"\t"x($tab/8),''x($tab%8);#跳過
在列表環境里,如果左操作數是在圓括弧中的列表,x的作用是一個列表復制器,而不是字串復制器。這個功能對初始化一個長度不定的數組的所有值為同一值時很有用:

@ones=(1)x80;#一個80個1的列表
@ones=(5)x@ones;#把所有元素設置為5
類似,你還可以用x初始化數組和散列片段:

@keys=qw(perlsbeforeswine);
@hash{@keys}=("")x@keys;
如果這些讓你迷惑,注意@keys被同時當做一個列表在賦值左邊使用和當做一個標量值(返回數組長度)在賦值語句右邊。前面的例子在%hash上有相同的作用:

$hash{perls}="";
$hash{before}="";
$hash{swine}="";

【編輯推薦】

  1. 暢談Perl操作符用法
  2. 解析四大Perl操作符用法
  3. Perl二維數組用法全程剖析
  4. 全面認識Perl操作符
  5. Perl多線程的兩種實現方式
責任編輯:佚名 來源: javaeye.com
相關推薦

2010-07-19 11:00:24

Perl操作符

2010-07-14 14:18:51

Perl操作符

2010-07-19 11:12:43

Perl 不等于

2010-07-14 14:46:57

Perl操作符

2010-07-14 14:30:31

Perl操作符

2009-08-21 09:30:05

is和as操作符

2010-07-13 11:11:39

Perl標量

2010-07-15 09:49:23

Perl標量

2021-10-31 18:59:55

Python操作符用法

2009-08-19 17:26:28

C# 操作符

2011-04-08 16:26:14

JavaScript

2016-11-17 15:35:51

RxJava操作Subscriber

2009-09-15 17:16:58

LINQ查詢操作符

2012-02-06 09:13:23

LINQ

2009-09-16 09:09:23

Linq Contai

2009-07-21 09:31:00

Scala操作符

2010-01-28 11:16:28

C++操作符

2016-12-28 09:54:50

AndroidRxJava操作符

2017-01-03 16:12:13

RxJava操作符Android

2009-07-14 18:34:22

Jython操作符重載
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产免费一区二区 | 男人天堂社区 | 亚洲精品一二三区 | 91精品国产91久久久久久吃药 | 九九亚洲| 蜜桃一区| 欧美精品在线观看 | 爱爱视频在线观看 | 日本在线视频中文字幕 | 三级视频在线观看 | 美女久久 | 日韩电影免费观看中文字幕 | 男女羞羞视频免费看 | 欧美三区视频 | av一区二区三区四区 | 97精品久久 | 国产精品综合色区在线观看 | 精品国产一区二区三区久久久蜜月 | 欧美一区二区三区视频 | 欧美精品在欧美一区二区 | 欧美精品片 | 狠狠干狠狠操 | 午夜精品91 | 国产999精品久久久久久 | 精品91av | 成人一区二区三区在线观看 | 三级黄色片在线播放 | 亚洲国产区 | 国产人成精品一区二区三 | 少妇无套高潮一二三区 | 一区二区三区四区视频 | 久久亚洲国产 | 国产精品美女久久久久久久网站 | 日韩欧美在线视频观看 | 久久久91精品国产一区二区三区 | 老司机深夜福利网站 | 亚洲欧美中文日韩在线v日本 | 亚洲在线日韩 | 国产电影一区二区 | 久久一区二 | 日韩在线欧美 |