溫馨提示×

溫馨提示×

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

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

Perl中如何使用內(nèi)部函數(shù)

發(fā)布時間:2021-06-23 14:45:35 來源:億速云 閱讀:202 作者:Leah 欄目:開發(fā)技術(shù)

Perl中如何使用內(nèi)部函數(shù),相信很多沒有經(jīng)驗的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個問題。

Perl內(nèi)部函數(shù)

Perl函數(shù)主要分為兩類:數(shù)組運算符和命名的一元運算符。不同之處在于他們的優(yōu)先級關(guān)系。(參閱優(yōu)先級表)數(shù)組運算符需要一個以上的參數(shù),而一元運算符不能超過一個參數(shù)。因此,一個逗號將結(jié)束一個一元運算符,對于數(shù)組運算符,只是起到分隔的作用。一元運算符一般只提供一個標(biāo)量作為參數(shù),而數(shù)組運算符可能會提供標(biāo)量或者數(shù)組作為參數(shù)。如果二者都有,標(biāo)量參數(shù)一般在前面,數(shù)組參數(shù)跟在后面。(注意,可以只有一個數(shù)組變量)比如,splice()有三個標(biāo)量變量,后面加上一個數(shù)組,相反gethostbyname()有四個標(biāo)量變量。

在語法描述中,數(shù)組運算符需要一個用LIST標(biāo)識的數(shù)組作為參數(shù)。這些數(shù)組可能由標(biāo)量參數(shù)和數(shù)組值混合組成;
數(shù)組值將包含在數(shù)組中,每個元素被插入數(shù)組中,形成一個更長一維的數(shù)組值。數(shù)組的元素應(yīng)該用逗號分開。

下面列出的函數(shù)有的在參數(shù)兩邊有括號,有的沒有。(語法描述中省略括號)

如果你使用括號,一個簡單的規(guī)則是(偶爾會令人吃驚):如果是函數(shù),沒有優(yōu)先級的問題;如果它是一個數(shù)組運算符或者一元運算符
那么就要考慮優(yōu)先級。并且,函數(shù)兩邊的空白和"("是不計算的--因此,有時候需要小心行事。看看下面的幾個例子:

print1+2+4; #Prints7.
print(1+2)+4; #Prints3.
print(1+2)+4; #Alsoprints3!
print+(1+2)+4; #Prints7.
print((1+2)+4); #Prints7.

前面說得似乎有點抽象,那么你在運行Perl時帶上-w開關(guān)你將得到一些警告信息,您可以根據(jù)這些信息再體會一下。例如,上面的例子會產(chǎn)生如下信息:
print(...)interpretedasfunctionat-line1.
Uselessuseofintegeradditioninvoidcontextat-line1.
有些Perl函數(shù)根本不需要參數(shù),因此工作方式和一元運算符和數(shù)組運算符都不同,time和endpwent算是兩個典型吧.如,time+86_400實際上是time()+86_400.

對于可以用在標(biāo)量或者數(shù)組的上下文中的函數(shù),非失敗性的錯誤在標(biāo)量環(huán)境下通常暗示返回了未定義的值或在數(shù)組環(huán)境下返回一個空的數(shù)組。

記住下面的重要原則:

沒有規(guī)則和數(shù)組環(huán)境下的表達(dá)式的行為和他的標(biāo)量環(huán)境的行為有關(guān)系,反之亦然。這可能產(chǎn)生兩種完全不同的情況。在標(biāo)量環(huán)境下,每個運算符和函數(shù)決定怎樣以最恰當(dāng)?shù)拇涡蚍祷刂?。有些運算符在數(shù)組環(huán)境下返回數(shù)組的長度.,有些運算符返回的一個元素,有些返回數(shù)組中的***一個元素,有些返回成功執(zhí)行的操作的語句數(shù)。通常,他們返回一些你需要的值,除非你需要連續(xù)性。

在標(biāo)量環(huán)境下的命名數(shù)組在***眼看上去時和在標(biāo)量環(huán)境下的列表有很大的不同。在標(biāo)量環(huán)境下,你不能得到一個像(1,2,3)的列表,因為在編譯時,編譯器是知道當(dāng)前環(huán)境的,它將在那里產(chǎn)生標(biāo)量的逗號運算符,而不是用于分隔數(shù)組元素的逗號.也就是說,它永遠(yuǎn)不會以一個數(shù)組開始。

一般說來,Perl中的函數(shù)對應(yīng)相應(yīng)的系統(tǒng)調(diào)用(如chown(2),fork(2),closedir(2),等等.)成功調(diào)用后返回真值,否則返回undef,下面將會提到。這一點和C的接口不一樣,C中出錯時將返回-1.但是也有幾個例外,他們是wait,waitpid,和syscall.系統(tǒng)調(diào)用出錯時出錯信息將通過特殊變量$!返回。其他的函數(shù)則不會,除非發(fā)生意外。

◆Perl函數(shù)分類

下面是Perl函數(shù)(包括看起來像函數(shù)的,如某些關(guān)鍵詞,命名運算符)的分類.

標(biāo)量和字符串函數(shù)

chomp,chop,chr,crypt,hex,index,lc,lcfirst,length,oct,ord,pack,q/STRING/,qq/STRING/,reverse,rindex,sprintf,substr,tr///,uc,ucfirst,y///

正則表達(dá)式和模式匹配
m//,pos,quotemeta,s///,split,study,qr//

Perl函數(shù)之?dāng)?shù)字運算函數(shù)

abs,atan2,cos,exp,hex,int,log,oct,rand,sin,sqrt,srand

真實數(shù)組函數(shù)

pop,push,shift,splice,unshift

列表數(shù)據(jù)函數(shù)

grep,join,map,qw/STRING/,reverse,sort,unpack

Perl函數(shù)之真實哈希函數(shù)

delete,each,exists,keys,values

輸入輸出函數(shù)

binmode,close,closedir,dbmclose,dbmopen,die,eof,fileno,flock,format,getc,print,printf,read,readdir,

rewinddir,seek,seekdir,select,syscall,sysread,sysseek,syswrite,tell,telldir,truncate,warn,write

固定長度的數(shù)據(jù)或記錄函數(shù)

pack,read,syscall,sysread,syswrite,unpack,vec

Perl函數(shù)之文件,目錄函數(shù)

-X,chdir,chmod,chown,chroot,fcntl,glob,ioctl,link,lstat,mkdir,open,opendir,readlink,rename,rmdir,stat,symlink,umask,unlink,utime

流控制關(guān)鍵詞

caller,continue,die,do,dump,eval,exit,goto,last,next,redo,return,sub,wantarray

作用域關(guān)鍵詞

caller,import,local,my,package,use
Miscellaneousfunctions
defined,dump,eval,formline,local,my,reset,scalar,undef,wantarray

Perl函數(shù)之進(jìn)程和進(jìn)程組函數(shù)

alarm,exec,fork,getpgrp,getppid,getpriority,kill,pipe,qx/STRING/,setpgrp,setpriority,sleep,system,times,wait,waitpid

Perl模塊關(guān)鍵詞

do,import,no,package,require,use

類和面向?qū)ο箨P(guān)鍵詞

bless

看完上述內(nèi)容,你們掌握Perl中如何使用內(nèi)部函數(shù)的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

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

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

AI