Perl的變數及語境 一

2021-09-06 22:57:01 字數 2850 閱讀 7269

perl語言中的大部分語句表示式後都緊接乙個分號,分隔不同的perl語句。

perl直譯器能一次完成編譯和執行這兩個動作。 perl通過一對反引號"``"來表示執行外部命令。

也可以通過system命令來執行外部程式,但是``返回命令的輸出值。/bin/ls返回檔名到陣列

system返回命令執行後的狀態(1沒問題,0有問題)

需要先行定義的變數

my $var;

@var = ();

%var = ();

標量(scalar)包括數字和字串兩部分。

在perl內部按「雙精度浮點數」的格式來儲存數字,整型常量也會被轉換成等效的浮點數。

perl允許在數字直接量間插入「_」分隔符。而且對於十進位制(decimal)之外的數。八進位制(octal)以「o」開頭。

十六進製制(hexadecimal)以「0x」開頭。二進位制(binary)以「0b」開頭。

數字操作符包括:+,-,*,/,%。取模操作先取整再求餘。

$fred += 5;         $str .= "";

perl內的字串長度不受限制,從空字串到無限長都可以。

如果原始碼內出現除ascii之外的其他字元,需要加use utf8;來加入任意乙個unicode的支援。

單引號內的字串,基本不會出現特殊字元,除單引號「 『 」和「 / 」,其他字元都表示他們本身。

雙引號內的字串,可以表示多個特殊字元,而且支援變數內插。

字串操作符有:字串連線符「 . 」,字串重複操作符「 x 」。表示重複的直接量在使用前會取整,直接去掉小數。

5x4.8          #得到「5555」

perl內支援數字與字串直接的自動轉換,根據操作符來判斷。字串中的非數字部分及其之後的數字部分,在轉換過程中都會被忽略。

標量變數(variable),以美元符號「$」來表示,為了避免變數名的歧義,可以使用花括號{}來將變數名括起來。

perl中的變數不需要初始化,初始值都是undef。而後可以直接用來賦值或運算。

運算操作符有比較操作符:按數字或字串來劃分,==(eq), !=(ne), <(lt), > (gt), <= (le), >= (ge)。

布林值:perl內部沒有專用的布林型別。如果數字是「0」,則為假,其他都是真。如果字串是空,則為假,其他都是真。

』0『是唯一的為假的非空字串。

perl中的控制結構:if...else..      while( ) 

print輸出結果用雙引號「」來表示輸出內容。

print "the answer is ", 6*7, ".\n";         #也可以用逗號","隔開,連在一塊來輸出。

perl獲得使用者輸入一般在末尾會帶有換行符。

$line = ;

chomp()函式,用於去掉字串末尾的換行符。

chomp($text = );

defined()函式,用來判斷某個字串是不是空字串。

perl內部的警告功能。可以在命令列用perl   -w perl_file來表示。或者use   warning。

當perl未被告知使用哪個變數或數值時,使用預設變數$_。

如print沒引數時,預設列印$_的值。

陣列:存放列表變數,可以用「@」字元加陣列名來引用整個陣列。陣列索引從「0」開始到「$#+陣列名」

$rock[$#rock] = 'hard rock';              #對最後乙個元素賦值。

列表直接量:用圓括號內用逗號隔開的一串字元表示。或者使用qw () {} !!表示,其中的空白符會被自動忽略。

qw( fred barney betty dino )  #表示4個元素的列表。

或者使用範圍操作符 ..   (1..100);   #以「1」為單位而遞增。

帶雙引號的字串內也可以進行陣列內插,同時注意陣列的索引值中的變數會按普通的字串表示式來表示,進而計算索引值。

$y =2;   $x = "this is $fred[$y-1]'s place"   #會直接取$fred[1]這個變數。

在標量上下文和列表上下文,perl的處理方式是不同的。

1)陣列的名稱在列表上下文,返回元素的列表。在標量上下文,返回陣列中的元素個數。     $number = 42+@people;

2)在標量上下文,使用reverse函式。  $backwards= reverse qw/yabba dabba doo/;    #賦值oodabbadabbay。

3)在標量上下文,返回輸入資料的下一行。在列表上下文,返回所有剩下的行。

pop/push操作:對陣列的最後乙個變數進行操作。

shift/unshift:對陣列的第乙個變數進行操作。shift像左移位,變空。unshift像右移位,增加資料

清空乙個陣列:對陣列賦值空列表,不能直接賦值undef,因為undef是乙個標量值。

splice操作:對陣列隨意的修改。第乙個引數表示要修改的陣列。第二個引數表示操作的元素的起始索引。第三個引數表示操作的長度。

第四個引數表示要替換的列表。

@array= qw( pebbles dino fred barney )

@removed=splice @array,  1, 2, qw(wilma);     #@array=qw( pebbles wilma barney)。

可以使用foreach迴圈體來遍歷列表或陣列中的數值,並且在此過程中列表或陣列或變數都不會被改變。

foreach $rock (@rocks)

reverse操作符:返回次序相反的列表或陣列。

sort操作符:按ascii碼的大小或字元的**點的大小來對列表或陣列進行排序。

while (my ( $index, $value) = each @rocks)  

perl的內建特殊變數一

當前頁可列印的行數,屬於perl格式系統的一部分 根據上下文內容返回錯誤號或者錯誤串 列表分隔符 列印數字時預設的數字輸出格式 perl直譯器的程序id 當前輸出通道的當前頁號 與上個格式匹配的字串 當前程序的組id 當前程序的有效組id 設定1表示處理多行格式.現在多以 s和 m修飾符取代之.當前...

perl 的一些系統變數

當前頁可列印的行數,屬於perl格式系統的一部分 根據上下文內容返回錯誤號或者錯誤串 列表分隔符 列印數字時預設的數字輸出格式 perl直譯器的程序id 當前輸出通道的當前頁號 與上個格式匹配的字串 當前程序的組id 當前程序的有效組id 設定1表示處理多行格式.現在多以 s和 m修飾符取代之.當前...

perl學習筆記一 變數

變數 一.直接量 常量 perl中常量和其他語言例如c語言沒什麼太大區別。所以在下面指出一些與其他語言不相同的地方。1.1 數字常量 在perl中可以表示八進位制和十六進製制。八進位制以0打頭,十六進製制以0x打頭。例如 a 010 八進位制 b 0x10 十六進製制 為了不跟八進位制的數字混淆,數...