1、數組的長度:
如果把陣列變數賦值給標量變數,那麼賦給標量變數的就是數組的長度:
$a = @Array;#標量變數$a中存放的是數組@Array的長度,即:數組中元素的個數;
($a,$b,$c) = (1,2,3); #則把1賦值給$a,把2賦值給$b,把3賦值給$c;
數組中的最後一個元素的下標索引由數組的特殊變數$#ArrayName決定;用“$#+數組名”表示一個特殊變數,這個變數中存放的是數組中最後一個儲存單元的下標索引值;$#ArrayName又稱為最後單元索引值,它總是表示數組中最後一個儲存單元的下標值;
所以可,可以使用這個特殊變數“$#數組名”也可以計算數組中元素的個數:
#ArrayLength = $#ArrayName + 1;
與數組中最後一個儲存單元對應的是第一個儲存單元,Perl中使用數組的特殊變數“$[”來表示數組中第一個儲存單元的下標值,即:數組中第一個儲存單元的索引值;而且可以通過修改這個特殊變數的值來改變數組中第一個儲存單元的下標索引值,期於的儲存單元的下標索引值則是在特殊變數“$[”的值的基礎上順序累加1得到;
數組的特殊變數“$# + 數組名”表示數組中最後一個儲存單元的下標索引值,Perl中可以通過改變這個特殊變數的值來增加或刪除數組中的元素;
例如:要在數組@Array的末尾填加N個新元素的空間時,
可以這樣做:$#Array += N;或@Array[$#Array + 1] = 值;
這就說明可以使用特殊變數“$# + 數組名”來設定數組的長度。Perl允許在數組中隨時填加新的數組單元,這個時候系統會在新加入數組單元時自動擴充數組的儲存空間和長度。所以說,Perl中的數組是動態數組;這在處理小的數組的時候比較方便,但是需要處理的資料量比較大的時候,卻會使程式啟動並執行速度大大減慢。這是每加入一個新的數組單元,系統都會自動擴充數組的空間和長度,而擴充操作是需要時間的,所以程式會變慢;如果可以事Crowdsourced Security Testing道需要處理的數組的長度,那麼可以通過設定特殊變數“$# + 數組名”來初始化數組的儲存單元空間,而後再使用數組,這樣就會提高資料的處理效率;
2、增加和刪除數組中的元素:
通過增加特殊變數“$# + 數組名”的值可以為數組增加新的元素,此時Perl會自動擴充數組的儲存空間:
$Array[$#Array++] = $NewVar;
通過減小特殊變數“$# + 數組名”的值可以刪除數組中的元素,此時Perl會自動回收數組的儲存空間:
$#Array++ ; #刪除最後一個元素
$#Array += N;#刪除最後N個元素
如果要把數組置為空白數組,則只需要把“$# + 數組名”設定為-1即可:$#Array = -1;
Perl中預設的數組單元下標編號為從0開始,依次遞增,但是如果程式有特殊需要的話,可以通過改變數組的特殊變數“ $[”的值來改變數組儲存單元的下標索引的起始值。$[可以設定為任意數值,剩餘的編號仍然在這個值的基礎上依次遞增;
3、數組資料的讀取:
讀取一個元素的值:$A = $Array[$Index];或 $A = @Array[$Index];
讀取部分元素的值:@SubArray = @Array[$StartIndex .. $EndIndex];#這個也是讀取子數組的方法;
注意:訪問讀取數組@Array中的元素時,如果給出的下標$Index超過了數組@Array的下標範圍,就說明要訪問
的元素不存在,此時就返回一個未定義值或空值(None/null);
4、子數組:
在讀取數組元素值的時候,可以讀取數組中的一部分元素做為另外一個新的數組使用,這個新的數組稱為子數組或數組分塊;子數組的規則與數組相同;
子數組使用字元“@”和“[ ]”共同定義:@SubArray = @ParentArrayName[StartIndex .. EndIndex];
引用數組中元素的時候,可以引用數組中不連續的單元,也可以不按順序來引用數組單元或給數組單元賦值;