新聞中心
本文和大家重點(diǎn)討論一下Perl內(nèi)部函數(shù),Perl中的函數(shù)主要分為兩類(lèi):數(shù)組運(yùn)算符和命名的一元運(yùn)算符。數(shù)組運(yùn)算符需要一個(gè)以上的參數(shù),而一元運(yùn)算符不能超過(guò)一個(gè)參數(shù),而一元運(yùn)算符一般只提供一個(gè)標(biāo)量作為參數(shù),而數(shù)組運(yùn)算符可能會(huì)提供標(biāo)量或者數(shù)組作為參數(shù)。

專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)郊區(qū)免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了數(shù)千家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
Perl內(nèi)部函數(shù)
Perl中的函數(shù)主要分為兩類(lèi):數(shù)組運(yùn)算符和命名的一元運(yùn)算符。不同之處在于他們的優(yōu)先級(jí)關(guān)系。(參閱優(yōu)先級(jí)表)數(shù)組運(yùn)算符需要一個(gè)以上的參數(shù),而一元運(yùn)算符不能超過(guò)一個(gè)參數(shù)。因此,一個(gè)逗號(hào)將結(jié)束一個(gè)一元運(yùn)算符,對(duì)于數(shù)組運(yùn)算符,只是起到分隔的作用。一元運(yùn)算符一般只提供一個(gè)標(biāo)量作為參數(shù),而數(shù)組運(yùn)算符可能會(huì)提供標(biāo)量或者數(shù)組作為參數(shù)。如果二者都有,標(biāo)量參數(shù)一般在前面,數(shù)組參數(shù)跟在后面。(注意,可以只有一個(gè)數(shù)組變量)比如,splice()有三個(gè)標(biāo)量變量,后面加上一個(gè)數(shù)組,相反gethostbyname()有四個(gè)標(biāo)量變量。
在語(yǔ)法描述中,數(shù)組運(yùn)算符需要一個(gè)用LIST標(biāo)識(shí)的數(shù)組作為參數(shù)。這些數(shù)組可能由標(biāo)量參數(shù)和數(shù)組值混合組成;
數(shù)組值將包含在數(shù)組中,每個(gè)元素被插入數(shù)組中,形成一個(gè)更長(zhǎng)一維的數(shù)組值。數(shù)組的元素應(yīng)該用逗號(hào)分開(kāi)。
下面列出的Perl內(nèi)部函數(shù)有的在參數(shù)兩邊有括號(hào),有的沒(méi)有。(語(yǔ)法描述中省略括號(hào))
如果你使用括號(hào),一個(gè)簡(jiǎn)單的規(guī)則是(偶爾會(huì)令人吃驚):如果是函數(shù),沒(méi)有優(yōu)先級(jí)的問(wèn)題;如果它是一個(gè)數(shù)組運(yùn)算符或者一元運(yùn)算符
那么就要考慮優(yōu)先級(jí)。并且,函數(shù)兩邊的空白和"("是不計(jì)算的--因此,有時(shí)候需要小心行事??纯聪旅娴膸讉€(gè)例子:
print1+2+4; #Prints7.
print(1+2)+4; #Prints3.
print(1+2)+4; #Alsoprints3!
print+(1+2)+4; #Prints7.
print((1+2)+4); #Prints7.
前面說(shuō)得似乎有點(diǎn)抽象,那么你在運(yùn)行Perl時(shí)帶上-w開(kāi)關(guān)你將得到一些警告信息,您可以根據(jù)這些信息再體會(huì)一下。例如,上面的例子會(huì)產(chǎn)生如下信息:
print(...)interpretedasfunctionat-line1.
Uselessuseofintegeradditioninvoidcontextat-line1.
有些Perl內(nèi)部函數(shù)根本不需要參數(shù),因此工作方式和一元運(yùn)算符和數(shù)組運(yùn)算符都不同,time和endpwent算是兩個(gè)典型吧.如,time+86_400實(shí)際上是time()+86_400.
對(duì)于可以用在標(biāo)量或者數(shù)組的上下文中的函數(shù),非失敗性的錯(cuò)誤在標(biāo)量環(huán)境下通常暗示返回了未定義的值或在數(shù)組環(huán)境下返回一個(gè)空的數(shù)組。
記住下面的重要原則:
沒(méi)有規(guī)則和數(shù)組環(huán)境下的表達(dá)式的行為和他的標(biāo)量環(huán)境的行為有關(guān)系,反之亦然。這可能產(chǎn)生兩種完全不同的情況。在標(biāo)量環(huán)境下,每個(gè)運(yùn)算符和函數(shù)決定怎樣以最恰當(dāng)?shù)拇涡蚍祷刂?。有些運(yùn)算符在數(shù)組環(huán)境下返回?cái)?shù)組的長(zhǎng)度.,有些運(yùn)算符返回的一個(gè)元素,有些返回?cái)?shù)組中的***一個(gè)元素,有些返回成功執(zhí)行的操作的語(yǔ)句數(shù)。通常,他們返回一些你需要的值,除非你需要連續(xù)性。
在標(biāo)量環(huán)境下的命名數(shù)組在***眼看上去時(shí)和在標(biāo)量環(huán)境下的列表有很大的不同。在標(biāo)量環(huán)境下,你不能得到一個(gè)像(1,2,3)的列表,因?yàn)樵诰幾g時(shí),編譯器是知道當(dāng)前環(huán)境的,它將在那里產(chǎn)生標(biāo)量的逗號(hào)運(yùn)算符,而不是用于分隔數(shù)組元素的逗號(hào).也就是說(shuō),它永遠(yuǎn)不會(huì)以一個(gè)數(shù)組開(kāi)始。
一般說(shuō)來(lái),Perl內(nèi)部函數(shù)對(duì)應(yīng)相應(yīng)的系統(tǒng)調(diào)用(如chown(2),fork(2),closedir(2),等等.)成功調(diào)用后返回真值,否則返回undef,下面將會(huì)提到。這一點(diǎn)和C的接口不一樣,C中出錯(cuò)時(shí)將返回-1.但是也有幾個(gè)例外,他們是wait,waitpid,和syscall.系統(tǒng)調(diào)用出錯(cuò)時(shí)出錯(cuò)信息將通過(guò)特殊變量$!返回。其他的函數(shù)則不會(huì),除非發(fā)生意外。
文章名稱(chēng):深入解析Perl內(nèi)部函數(shù)的使用
網(wǎng)站鏈接:http://fisionsoft.com.cn/article/cdsoich.html


咨詢(xún)
建站咨詢(xún)
