Perl中陣列的使用

2021-05-23 15:46:43 字數 2245 閱讀 6912

perl中陣列的使用--

下一節

陣列是perl裡面一種非常有用的東西。我們可以通過下面的方式定義陣列:

@a=("hello","great","cipher");

@b=(1,2,3,4,5,6,7);

@b的定義方式還可以寫成下面的形式:

@b=(1..7); #這種方式對於需要1到10000的初始值得陣列真實太重要了。   

@b=("a".."z");

也是可以的,但是我想不出來對中國人有什麼用。定義乙個空陣列可以用下面的方式:

@c=();

訪問陣列通過下面的方式(下標和c語言一模一樣,從0開始,basic的使用者要注意了):

$b[0]=10000;

注意這裡引導符變成了$不是@。通過這個變化表示這時正在訪問乙個單獨的資料。而不是一組資料。還可以使用多個下標,但是這時就要使用@引導符了。例如:

@b[5,7,9]=(45,56,67);

這種情況下,print $b[8];將會在使用了perl -w得到乙個使用未定義變數的錯誤,其他情況下什麼都不會發生。

陣列之間相互拷貝,可以用下面的方式:

@d=@c;

這樣要比c語言簡單多了。同c語言不同,perl的陣列是可以動態改變大小的。因此我們可以追加,刪除陣列內的元素。追加乙個元素可以使用這種方式:

@c=(@c,"hello");

perl裡面有乙個專門的函式用來驚醒追加操作叫做push,push的使用方法如下:

push(@c,"hello");

push(@c,("hello","halloha"));

push(@c,@a);

這裡可以看到,可以給陣列追加乙個元素,一組元素甚至另外乙個陣列。另外,在perl的陣列中可以放不同型別的標量。這一點在c程式設計師的眼中可能有點怪異,但是如 果記住perl裡面的一切都是引用就可以了。或者理解成這是乙個void型別的指標的陣列。有了push,就一定有pop。pop就是從陣列的最後取出乙個元素。用法為:

pop(@a);

既然可以從陣列的末尾加入元素,那麼一定也可以從陣列的開頭加入元素。那麼這個功能是由unshift函式提供的。用法為:

unshift(@c,"hello");

unshift(@c,("hello","halloha"));

unshift(@c,@a);

有了unshif就一定會有shift了。shift的功能是從陣列的開頭取出乙個元素。用法為:

unshift( @a);

有了運算元組兩端的函式那麼一定也會有運算元組中間部分的函式,這個函式就是splice,splice函式有三個作用。第乙個作用是向陣列中間的一部分插入內容。例如:

@d=(1..9);

my @e=("a".."f");

splice(@d,2,2,@e);

將會得到12abcdef56789,注意這裡是從第二個開始插入,不是從下標為2的元素開始插入的。splice的第二個功能是刪除,例如在剛才的**上面再加上:

splice(@d,2,6);

將可以得到1256789;splice的第三個功能就是刪除到末尾。語法為:

splice(@d,2);

就是從第二個開始,刪除到末尾。我們還應該有乙個可以把整個陣列合併成乙個標量的函式。這個函式就是join,join有兩個引數,第乙個引數是合併時放在元素之間的分割符,第二個是進行操作的陣列。 例如:

my @g=(1,2,3);

join(" ",@g);

將可以得到「1 2 3」,還有三個函式我們昨天已經見過了,就是undef,chop和chomp。undef(@a); 的作用是把@a的內容清空。chop(@a); 的作用是把陣列內每個元素的末尾去乙個字元。而chomp(@a); 的作用則是把陣列內的每乙個元素的末尾的換行符去掉。我們還應該介紹乙個函式就是scalar,這個函式取得陣列的長度。例如:

my @h=(1,2,3);

scalar(@h);

將可以得到3。但是我們經常不這麼用,因為在將陣列向標量轉換時就會返回陣列的長度,例如下面的操作就可以。

my @i=(1,2,3,4);

print @i."/n";

將會列印出4。 好了,今天就到這裡吧,最後是乙個概括了今天大部分內容的程式。我寫的。中間會輸出很多錯誤資訊。呵呵。

#!/user/bin/perl -w

use strict;

嘻嘻,程式很長,不過試著執行一下,全是上面所講的內容的應用,加深一下你的印象嗎。

perl中陣列的定義和使用

1.資料的定義和使用 方式一 array 1 0 beijing array 1 1 tianjin array 1 2 chongqin 方式二 array 2 beijing tianjin chongqin 2.資料的使用 array 2 beijing tianjin chongqin pr...

Perl中的陣列操作

1 陣列的長度 如果把陣列變數賦值給標量變數,那麼賦給標量變數的就是陣列的長度 a array 標量變數 a中存放的是陣列 array的長度,即 陣列中元素的個數 a,b,c 1,2,3 則把1賦值給 a,把2賦值給 b,把3賦值給 c 陣列中的最後乙個元素的下標索引由陣列的特殊變數 arrayna...

perl陣列硬引用 perl中的引用

為什麼使用引用?在perl4中,hash表中的value欄位只能是scalar,而不能是list,這對於有些情況是很不方便的,比如有下面的資料 chicago,usa frankfurt,germany berlin,germany washington,usa helsinki,finland n...