Perl 08 陣列庫函式

2021-05-23 11:33:31 字數 2377 閱讀 6372

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()和un****f()

$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或0或『/0』結束,則在perl中可建立這樣的字串資料:

$cstring  =  pack(「ax」,$mystring);

@list   =  unpack(packformat,$formatstring):該函式的功能與pack()函式的功能相反,用於把以機器格式儲存的值轉化成perl中值的列表;其格式字元與pack()函式的基本相同;

Perl 最佳實踐 節選 08

不要在 sort 中重新計算排序鍵。使用 reverse 逆轉列表。使用 scalar reverse 逆轉標量。使用 unpack 取出固定寬度的字段。使用 split 取出簡單的可變寬度的字段。使用 text csv xs 以取出複雜的可變寬度的字段。避免對字串使用 eval 考慮以 sort ...

Perl入門(三)Perl的陣列

perl陣列的宣告方式 perl使用 符號宣告乙個陣列 array 使用 或 qw 宣告陣列中元素 乙個完整的宣告方式為 array 12,123 abc var 方法一 或者 array qw 12 123 abc 方法二 或者 array 1.10 方法三 perl陣列的訪問 陣列通過下標進行訪...

Perl陣列排序

本文我們學習如何用perl對字串或者數字陣列進行排序。perl有個內建函式叫做sort毫無疑問的可以排序乙個陣列。其最簡單的形式是傳遞乙個陣列,它會返回排序後的元素組成的陣列。sorted sort original。usr bin perl usestrict use warnings use 5...