溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何使用Perl操作符

發(fā)布時(shí)間:2021-12-07 09:11:37 來(lái)源:億速云 閱讀:174 作者:小新 欄目:開(kāi)發(fā)技術(shù)

小編給大家分享一下如何使用Perl操作符,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

箭頭Perl操作符

和C和C++類似,雙目Perl操作符->是一個(gè)中綴解引用Perl操作符。如果右邊是一個(gè)[...]數(shù)組下標(biāo)、一個(gè){...}散列下標(biāo)、或者一個(gè)(...)子過(guò)程參數(shù)列表,那么左邊必須是一個(gè)對(duì)應(yīng)的數(shù)組、散列、或者子過(guò)程的應(yīng)用(硬引用或符號(hào)引用都行)。在一個(gè)左值(可賦值)環(huán)境里,如果左邊不是一個(gè)引用,那它必須是一個(gè)能夠保存硬引用的位置,這種情況下這種引用會(huì)為你自動(dòng)激活。有關(guān)這方面的更多的信息(以及關(guān)于故意自激活的一些警告信息),請(qǐng)參閱第八章,引用。

$aref->[42]#一個(gè)數(shù)組解引用
$href->{"cornedbeff"}#一個(gè)散列解引用
$sref->(1,2,3)#一個(gè)子過(guò)程解引用
要不然,它就是某種類型的方法調(diào)用。右邊必須是一個(gè)方法名(或者一個(gè)包含該方法名的簡(jiǎn)單標(biāo)量變量),而且左邊必須得出一個(gè)對(duì)象名(一個(gè)已賜福引用)或者一個(gè)類的名字(也就是說(shuō),一個(gè)包名字):

$yogi=Bear->new("Yogi");#一個(gè)類方法調(diào)用$yogi->swipe($picnic);#一個(gè)對(duì)象方法調(diào)用

方法名可以用一個(gè)包名修飾以標(biāo)明在哪個(gè)包里開(kāi)始搜索該方法,或者帶著特殊包名字,SUPER::,以表示搜索應(yīng)該從父類開(kāi)始。參閱第十二章,對(duì)象。

自增和自減Perl操作符

++和--Perl操作符的功能和C里面一樣。就是說(shuō),當(dāng)把它們放在一個(gè)變量前面時(shí),它們?cè)诜祷刈兞恐抵霸黾踊蛘邷p少變量值,當(dāng)放在變量后面時(shí),它們?cè)诜祷刈兞恐岛笤賹?duì)其加一或減一。比如,$a++把標(biāo)量變量$a的值加一,在它執(zhí)行增加之前返回它的值。類似地,--$b{(/(\w+)/)[0]}把散列%b里用缺省的搜索變量($_)里的***個(gè)“單詞”索引的元素先減一,然后返回。(注:哦,這兒可能有點(diǎn)不公平,因?yàn)楹枚鄸|西你還不知道。我們只是想讓你專心。該表達(dá)式的工作過(guò)程是這樣的:首先,模式匹配用表達(dá)式\w+在$_里找***個(gè)單詞。它周?chē)膱A括弧確保此單詞作為單元素列表值返回,因?yàn)樵撃J狡ヅ涫窃诹斜憝h(huán)境里進(jìn)行的。這個(gè)列表環(huán)境是由列表片段Perl操作符,(...)[0]提供的,它返回列表的***個(gè)(也是***一個(gè))元素。該值用做散列的鍵字,然后散列記錄(值)被判斷并返回。通常,如果碰到一個(gè)復(fù)雜的表達(dá)式,你可以從內(nèi)向外地分析它并找出事情發(fā)生的順序。)

自增Perl操作符有一點(diǎn)額外的內(nèi)建處理。如果你增加的變量是一個(gè)數(shù)字,或者該變量在一個(gè)數(shù)字環(huán)境里使用,你得到正常自增的功能。不過(guò),如果該變量從來(lái)都是在字串環(huán)境里使用,而且值為非空,還匹配模式/^[a-zA-z]*[0-9]*$/,這時(shí)自增是以字串方式進(jìn)行的,每個(gè)字符都保留在其范圍之內(nèi),同時(shí)還會(huì)進(jìn)位:

print++($foo='99');#打印'100'
print++($foo='a0');#打印'a1'
print++($foo='Az');#打印'Ba'
print++($foo='zz');#打印'aaa'
在我們寫(xiě)這些的時(shí)候,自增的額外處理還沒(méi)有擴(kuò)展到Unicode字符和數(shù)字,不過(guò)將來(lái)也許會(huì)的。

不過(guò)自減Perl操作符沒(méi)有額外處理,我們也沒(méi)有準(zhǔn)備給它增加這個(gè)處理。

指數(shù)運(yùn)算

雙目**是指數(shù)Perl操作符。請(qǐng)注意它甚至比單目Perl操作符的綁定更嚴(yán)格,所以-2**4是-(2**4),不是(-2)**4。這個(gè)Perl操作符是用C的pow(3)函數(shù)實(shí)現(xiàn)的,該函數(shù)在內(nèi)部以浮點(diǎn)數(shù)模式運(yùn)轉(zhuǎn)。它用對(duì)數(shù)運(yùn)算進(jìn)行計(jì)算,這就意味著它可以處理小數(shù)指數(shù),不過(guò)有時(shí)候你得到的結(jié)果不如直接用乘法得出的準(zhǔn)確。

表意單目Perl操作符

大多數(shù)單目Perl操作符只有名字(參閱本章稍后的“命名的單目和文件測(cè)試Perl操作符”),不過(guò),有些Perl操作符被認(rèn)為比較重要,所以賦予它們自己的特殊符號(hào)。所有這類Perl操作符好象都和否定操作有關(guān)。罵數(shù)學(xué)家去。

單目!執(zhí)行邏輯否,就是說(shuō),“not”。參閱not看看一個(gè)在優(yōu)先級(jí)中級(jí)別較低的邏輯否。如果操作數(shù)為假(數(shù)字零,字串"0",空字串或未定義),則對(duì)操作數(shù)取否,值為真(1),若操作數(shù)為真,則值為假(“”)。

如果操作數(shù)是數(shù)字,單目-執(zhí)行數(shù)學(xué)取負(fù)。如果操作數(shù)是一個(gè)標(biāo)識(shí),則返回一個(gè)由負(fù)號(hào)和標(biāo)識(shí)符連接在一起的字串。否則,如果字串以正號(hào)或負(fù)號(hào)開(kāi)頭,則返回以相反符號(hào)開(kāi)頭的字串。這些規(guī)則的一個(gè)效果是-bareword等于"-bareword"。這個(gè)東西對(duì)Tk程序員很有用。

單目~Perl操作符進(jìn)行按位求反,也就是1的補(bǔ)數(shù)。從定義上來(lái)看,這個(gè)是有點(diǎn)不可移植的東西,因?yàn)樗芟抻谀愕臋C(jī)器。比如,在一臺(tái)32位機(jī)器上,~123是4294967172,而在一臺(tái)64位的機(jī)器上,它是18446744073709551493。不過(guò)你早就知道這個(gè)了。

你可能還不知道的是,如果~的參數(shù)是字串而不是數(shù)字,則返回等長(zhǎng)字串,但是字串的所有位都是互補(bǔ)的。這是同時(shí)翻轉(zhuǎn)所有位的最快的方法,而且它還是可移植的翻轉(zhuǎn)位的方法,因?yàn)樗灰揽磕愕臋C(jī)器的字大小。稍后我們將談到按位邏輯Perl操作符,它也有一個(gè)面向字串的變體。

單目+沒(méi)有任何語(yǔ)義效果,即使對(duì)字串也一樣。它在語(yǔ)法上用于把函數(shù)名和一個(gè)圓括弧表達(dá)式分隔開(kāi),否則它們會(huì)被解釋成一個(gè)一體的函數(shù)參數(shù)。(參閱“項(xiàng)和列表Perl操作符”的例子。)如果你向它的一邊進(jìn)行考慮,+取消了圓括弧把前綴Perl操作符變成函數(shù)的作用。

單目Perl操作符\給它后面的東西創(chuàng)建一個(gè)引用。在一個(gè)列表上使用時(shí),它創(chuàng)建一列引用。參閱第八章中的“反斜杠Perl操作符”獲取詳細(xì)信息。不要把這個(gè)性質(zhì)和字串里的反斜杠的作用混淆了,雖然兩者都有防止下一個(gè)東西被轉(zhuǎn)換的模糊的含義。當(dāng)然這個(gè)相似也并不是完全偶然的。

以上是“如何使用Perl操作符”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI