perl學習筆記4 z

2021-04-22 14:17:37 字數 3056 閱讀 7133

1.**塊標籤

對任何迴圈塊來說,除了

do/while

或者do/until

結構外,他們都可以設定乙個「標籤」(

label

)。除了來對**塊作簡要說明之外,這個標籤還可以做

next

;last

和redo

等迴圈控制命令的乙個「目的地」或「目標」使用。注意,在指定標籤名的時候,在它後面要跟乙個冒號;且標籤一般使用大寫。

例如:outer

:迴圈塊

2.裸塊:

「裸塊」是一種包含了零行或多行**的**塊,用一對花括號封閉起來,既可能有標籤,也可能沒有標籤——但無論如何,都沒有配套使用的控制結構關鍵字。這種塊經常和

last

和redo

這樣的迴圈控制語句配合使用。注意,在乙個裸塊使用場合,

next

等價last。3.

邏輯運算子

與:&&and

或:||or

非:!not

在使用中一般使用「短路求值」。

4.錯誤控制函式:

die和

warn

在程式出現錯誤的時候使用

die函式進行錯誤提示,並中止程式執行。

一般寫為如下格式:

關鍵條件

ordie

「錯誤:關鍵條件沒有滿足

/n

;

perl

會把最近產生的系統錯誤訊息儲存在乙個名為「$!

」的特殊變數中。

warn

函式可以產生和

die相同的輸出,只是程式不中止執行。

5.內建數學函式

函式說明

例子cos($x)求x

的余弦(

x用弧度表示)

cos(0)等於1

exp($x)求x

的x次方exp(1)

等於2.71828

abs($x)求x

的絕對值

abs(-5.1)

等於5.1

log($x)求x

的自然對數

log(2.71828)等於1

sin($x)求x

的正弦值

sin(0)等於0

sqrt($x)求x

的平方根

sqrt(900)

等於30

6.使用者自定義子程式

如果呼叫子程式時,子程式後跟一對空括號,表明子程式不接受

任何引數。

子程式的主體部分必須封閉在一對花括號內部。

子程式定義的標準格式如下:

sub

子程式名

7.引數列表

子程式接收的引數儲存在特殊的陣列變數@_

中。

特殊陣列變數@_

可以「處理」或者「打散」所有陣列與雜湊。也就是說,假如向子程式同時傳送乙個陣列值和乙個標量值,那麼在最終的

@_中,只會包含乙個簡單的列表,其中列出了來自陣列的資料和標量值。類似地,如果把乙個雜湊傳遞給子程式,那麼

@_最終也會拆散所有「鍵—值」對,用一種「平鋪直敘」的方法,把這些資料表示出來。

注意:@_

不能使用

$# 統計陣列的位數。

8.返回值ø

乙個子程式完成了自己的任務,結果資料可以通過

return

關鍵字返回子程式的呼叫者。

ø在子程式中使用如下表示式:

$value = shift;

意味著刪除子程式特殊陣列變數

@_中的第乙個元素,並將它賦予標量變數

$value。ø

一旦執行到

return

語句,子程式便會立即中止。

return

以後的語句將不會執行。如果子程式沒有明確的寫

return

語句,那麼子程式會預設返回它執行的最後一條語句的值。

øwantarray

函式:如果子程式主體中呼叫了這個函式,那麼假如子程式是在乙個列表使用場合下呼叫的,該函式便返回乙個真值;假如子程式是在乙個標量使用場合下呼叫的,該函式便返回乙個假值。

ø特殊變數

$」,表示預設的分隔字元是什麼,通常儲存著「

」值,(即乙個空格)。在雙引號中列印乙個陣列時,

$」中的值決定了在不同的值之間,應該列印什麼字元作為分隔符。

9.呼叫子程式的其他方式

øperl

用型別識別符號來區分不同的型別。對乙個子程式的名字來說,應該在它的前面加乙個型別識別符號

&。比如

&subroutine1();

它的作用便是呼叫乙個名為

subroutine1

的子程式。

ø如果呼叫子程式不需要傳遞任何引數;或者子程式只接收呼叫者的

@_變數(作為預設引數),那麼就可以省去圓括號。但如果有任何顯式引數需要傳遞給子程式,那麼一對圓括號便是必需的。

ø呼叫子程式的另一種語法是「裸字」。子程式名周圍沒有任何特殊符號可幫助

perl

判斷程式裡乙個名字的用途。假如在裸字之前,已經在程式中定義過字程式,那麼

perl

會呼叫相應得子程式。但是,如果在裸字之前沒有定義子程式,那麼

perl

將會把裸字解釋成為乙個字串,不會呼叫與它相對應的子程式。

10.生成隨機數

ø使用函式

rand

可生成乙個浮點標量值,它預設情況大於

0,但小於1。在

rand

函式種可以限定隨機數產生的範圍,如:

rand(6)

產生乙個大於

0,小於

6的隨機數。

ø偽隨機數:函式

rand

隨機數產生是利用前乙個隨機數以及乙個「種子」值,來產生下乙個隨機數。如果使用srand

函式設定種子值,將產生偽隨機數。ø由

rand

函式直接生成的值肯定在如下範圍內:

0<= rand ($x) < $x

perl學習筆記1 z

陣列1 在perl 中,如果將乙個非整數值當作陣列的下標使用,不會造成語法錯誤,但仍然會造成邏輯錯誤。例如,在乙個陣列下標表示式中,乙個非數字的字串下標求值結果為零,因此,表示式返回的肯定是陣列中的第乙個元素。2 對於陣列來說,並不一定要求其中的所有元素都具有同樣的型別。不過,所有陣列元素至少都得為...

perl學習筆記3 z

1 雜湊片斷,如果在花括號中提供了多鍵,便會返回與那些鍵相對應的值,結果生成的列表會被當作乙個陣列對待。所以無論是雜湊片斷還是陣列片斷,都要採用 符號。2 應用於雜湊的函式 keys 函式可返回乙個列表,其中包含了雜湊內的所有鍵值。values 函式也能返回乙個列表,其中包含了雜湊中的所有值。eac...

perl學習筆記5 z

1 遞迴 略 2 作用域規則 全域性 字典和動態的 識別符號的 作用域 是指程式中乙個特定的部分。只有在這個部分中,才可對此識別符號進行引用。有的識別符號可在程式中的任何地方引用 另一些則只能在有限的部分才能引用。字典作用域變數,只有在定義他的那個 快中才能使用它。動態作用域變數,只有從它建立位置開...