1、數組拼接函數:splice
用於向列表或數組中插入元素或子列表,也可以從數組或列表中刪除元素或子列表,還可以替換數組或列表中的元素或子列表;其原形如下:
@RetValue = splice(@Array,SkipElements,Length,@NewList);
參數SkipElements是拼接前跳過的元素數目,即:從第SkipEllements個元素處開始拼接;Length表示將要被替換掉的元素數;@NewList是將要拼接近來的數組或列表;當@NewList的長度大於Length時,後面的元素自動向後移動,反之則向前移動;因此,當Length == 0時,就相當於向數組或列表中插入元素;如:
splice(@Array ,-1,0,“Hello”);#表示想數組尾部添加一個元素;
當@NewList為空白的時候,就相當於從數組或列表中刪除元素或子列表;這時,如果Length為空白,則就把第SkipElements個元素之後的元素全部刪除;如:
splice(@Array,5) ; # 表示把第6個元素後面的元素全部刪除;
splice(@Array,-1); #表示刪除數組或列表中的最後一個元素;傳回值為被刪除元素的列表;
splice(@Array,5,1);#刪除數組@Array中的第6個元素之後的那個元素;
2、數組排序函數:sort() / reverse()
sort()函數為數組或列表排序,返回排序後的數組或列表;
reverse()函數使數組或列表中的所有元素按照字母順序逆需排列,返回處理後的數組或列表;
3、隊列函數:
Perl中可以把數組或列表看成隊列來使用;
隊頭操作函數:shift()和unshitf()
$Element = shift(@Array):刪除數組中的第一個元素,剩下的元素全部向前移動,並返回被刪除的元素;不加參數時,預設對數組@ARGV進行操作;
$Count = unshift(@Array,Elements):這個函數的功能shift()相反,它在數組的第一個元素之前增加一個或多個元素,傳回值為結果清單或數組的長度;
隊尾操作函數:push()和pop()
$Element = pop(@Array):刪除數組的最後一個元素,並返回這個被刪除的元素;當列表已空,則返回未定義值(即:空值);
$Count = push(@Array,Elements):在數組或列表的尾部增加一個或多個元素,並返回結果清單或數組的長度;
4、vec函數:vec()
vec是向量函數,它把簡單變數$Vector的值看作多塊(維)資料,每塊資料中含有一定數量的位(bit),合起來即為一個向量資料。每次調用訪問其中的一塊資料,可以讀娶,也可以寫入,參數$Index就像是數組的下標一樣,指出訪問哪一塊,0為第一塊,依次類推,需要注意的是,訪問次序是從右至左,即:第一塊在最右邊;參數bits指定每一塊中的位元,可以取值位1、2、4、8、16或32;調用方法如下:
$RetVal = vec($Vector,$Index,$bits);
5、其它數組函數
@ResultList = map(Expr,@List);
該函數把@List中的各個元素作為運算式Expr的運算元進行計算,耳@List中的元素本身保持不變,把對@List中的各個元素的處理結果存入到一個新的數組或列表中,並把這個新的數組或列表作為傳回值;在運算式Expr中,系統變數“$_”表示@List中的各個元素;
$FormatString = pack(PackFormat,@List):把一個列表或數組以在機器中儲存的格式或C等程式設計語言所使用的格式轉化(封裝)到一個簡單變數中;參數PackFormat中包含一個或多個格式字元,列表@List中每個元素對應一個,各個格式字元間可用空格或tab鍵隔開,pack()函數會忽略空格;
對於參數PackFormat中存放的格式字元來說,要重複使用某一格式多次的話,可在這個格式字元後面加上表示一個表示使用次數的整數;
如:$TwoInts = pack(“i2”,103,241); #“i2”表示需要使用格式i2次;
而如果要把同一個格式應用到數組或列表中的所有元素上,可在該格式字元後面加上一個星號“*”;如:
$ManyInts = pack(“i*”,14,26,11,83);
其它相關格式字元,在編寫Perl程式的時候可以隨時查閱相關文檔;
pack()函數最常見的用途就是建立可與C程式互動的資料;如:C中的字串以Null 字元NULL或0或‘/0’結束,則在Perl中可建立這樣的字串資料:
$CString = pack(“ax”,$MyString);
@List = unpack(PackFormat,$FormatString):該函數的功能與pack()函數的功能相反,用於把以機器格式儲存的值轉化成Perl中值的列表;其格式字元與pack()函數的基本相同;