您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Perl中怎么使用內部函數,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Perl內部函數
Perl中的函數主要分為兩類:數組運算符和命名的一元運算符。不同之處在于他們的優先級關系。(參閱優先級表)數組運算符需要一個以上的參數,而一元運算符不能超過一個參數。因此,一個逗號將結束一個一元運算符,對于數組運算符,只是起到分隔的作用。一元運算符一般只提供一個標量作為參數,而數組運算符可能會提供標量或者數組作為參數。如果二者都有,標量參數一般在前面,數組參數跟在后面。(注意,可以只有一個數組變量)比如,splice()有三個標量變量,后面加上一個數組,相反gethostbyname()有四個標量變量。
在語法描述中,數組運算符需要一個用LIST標識的數組作為參數。這些數組可能由標量參數和數組值混合組成;
數組值將包含在數組中,每個元素被插入數組中,形成一個更長一維的數組值。數組的元素應該用逗號分開。
下面列出的Perl內部函數有的在參數兩邊有括號,有的沒有。(語法描述中省略括號)
如果你使用括號,一個簡單的規則是(偶爾會令人吃驚):如果是函數,沒有優先級的問題;如果它是一個數組運算符或者一元運算符
那么就要考慮優先級。并且,函數兩邊的空白和"("是不計算的--因此,有時候需要小心行事。看看下面的幾個例子:
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開關你將得到一些警告信息,您可以根據這些信息再體會一下。例如,上面的例子會產生如下信息:
print(...)interpretedasfunctionat-line1.
Uselessuseofintegeradditioninvoidcontextat-line1.
有些Perl內部函數根本不需要參數,因此工作方式和一元運算符和數組運算符都不同,time和endpwent算是兩個典型吧.如,time+86_400實際上是time()+86_400.
對于可以用在標量或者數組的上下文中的函數,非失敗性的錯誤在標量環境下通常暗示返回了未定義的值或在數組環境下返回一個空的數組。
記住下面的重要原則:
沒有規則和數組環境下的表達式的行為和他的標量環境的行為有關系,反之亦然。這可能產生兩種完全不同的情況。在標量環境下,每個運算符和函數決定怎樣以最恰當的次序返回值。有些運算符在數組環境下返回數組的長度.,有些運算符返回的一個元素,有些返回數組中的***一個元素,有些返回成功執行的操作的語句數。通常,他們返回一些你需要的值,除非你需要連續性。
在標量環境下的命名數組在***眼看上去時和在標量環境下的列表有很大的不同。在標量環境下,你不能得到一個像(1,2,3)的列表,因為在編譯時,編譯器是知道當前環境的,它將在那里產生標量的逗號運算符,而不是用于分隔數組元素的逗號.也就是說,它永遠不會以一個數組開始。
一般說來,Perl內部函數對應相應的系統調用(如chown(2),fork(2),closedir(2),等等.)成功調用后返回真值,否則返回undef,下面將會提到。這一點和C的接口不一樣,C中出錯時將返回-1.但是也有幾個例外,他們是wait,waitpid,和syscall.系統調用出錯時出錯信息將通過特殊變量$!返回。其他的函數則不會,除非發生意外。
看完上述內容,你們對Perl中怎么使用內部函數有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。