1.Perl數組(1):
1) 初始化數組 @array = ( "stringA" , "stringB" , "stringC" );
2) 使用負索引循環檢索 print $array[-1]; #輸出索引為(-1 + 3) % 3 = 2 的 stringC
3) 動態增長 $array[4] = "stringD"; #雖然$array[3]還沒有使用,但在動態賦值$array[4]的使用,已經對$array[3]賦空置
4) 動態增長后的負索引 print $array[-1]; #輸出索引為(-1 + 5) % 5 = 4 的 stringD
5) print @array; #輸出數組中所有值的無空格串接
6) print "@array"; #輸出數組中所有值的空格分隔列表
2.Perl數組(2):
1) 數組中可以保存不同類型的數據(字符串、數值、數組)
2) $size = @array; 該語句把數組@array的數組長度值給標量$size,但如果在某些函數中直接使用@array,將不一定能得到數組長度
3) $#arrayname,該特殊變量保存著名為arrayname的數組的末尾索引值。
例如: @arr = ( 1,2,3,4,5 );
則$#arr的值為4
$#arr=2; 這樣就把數組arr截斷,其元素4和5都被釋放,數組長度值也被改變
4) @array[-1,4,7] 將分別輸出索引值為-1,4,7的元素,這樣的調用返回值不是標量,而是數組
5) 多維數組使用多層方括號定義
@D3array = (
[ [1,2,3,4] , [5,6,7] , [8,9,0] ],
[ [ 'str1' , 'str2' , 'str3' ] , [345 , 67 , 8930] ],
[ [ 4,6,7] , [2] , [ "sud" ] ]
);
多維數組中每維的數組長度不需要一致,內部數據元素也不需要一致。
獲取第一維的數組長度方式是 $size = @array;
第二維 $size = @{$array[$i]};
第三維 $size = @{$array[$i][$j]};
....... ......
關鍵是,只要@符號后跟一個數組變量時,就可以獲取其長度,但超過一維時,獲取數組變量的表達式要用{}包住
3.命令行執行Perl語句
1)perl -e '命令語句' 這樣可以直接在命令行執行Perl語句,不過要注意引號匹配規則。
2)perl -ne '命令語句' filename 這樣可以逐行讀入filename中的數據,然后對每行都以命令語句處理。
例如 a) perl -ne 'print;' abc.txt
在命令行界面逐行輸出abc.txt文件的數據
b) perl -ne 'print if /^192/ ' /etc/hosts > ~/hosts.tmp
把UNIX like系統中主機解釋文件的內容逐條寫到~/hosts.tmp文件下,不過只有符合以192開頭的行,才會被寫入,因為語句會執行篩選
3)'OS命令' | perl -ne '命令語句' 這樣可以把之前執行的OS命令的輸出作為輸入流,重定向到后面執行的perl命令中。
例如 a) ls -al | perl -ne 'print;'
把當前目錄下所有子文件、子目錄列出,并作為輸入數據輸入到perl命令中,再逐條打印
4.Perl引號規則
1)雙引號中的內容允許轉義和變量解析,縮寫是qq/內容/
2)單引號中的任何字符都不會被轉義和變量不會被解析,縮寫是q/內容/
3)反引號中的內容如果出現OS命令,該命令會被執行,并且結果數組會替換命令位置,或作為賦值的數據,縮寫是qx/內容/
新聞熱點
疑難解答