數組是perl里面一種很是有用的工具。我們可以通過(guò)下面的體式格局定義數組:
@a=("你好","great","cipher");
@b=(1,2,3,4,5,6,7);
@b的定義體式格局還可以寫(xiě)成下面的形式:
@b=(1..7); #這種體式格局對需要1到10000的初始值當數組真實(shí)太重要了。
@b=("a".."z");
也是可以的,可是我想不出來(lái)對中國人有什么用。定義一個(gè)空數組可以用下面的體式格局:
@c=();
拜候數組通過(guò)下面的體式格局(下標和c語(yǔ)言一模一樣,從0起頭,basic的用戶(hù)要注意了):
$b[0]=10000;
注意這里指導符釀成為了$不是@。通過(guò)這個(gè)變化暗示這時(shí)正在拜候一個(gè)單獨的數值。而不是一組數值。還可以施用多個(gè)下標,可是這時(shí)就要施用@指導符了。例如:
@b[5,7,9]=(45,56,67);
這種情況下,print $b[8];將會(huì )在施用了perl -w獲得一個(gè)施用未定義變量的錯誤,其他情況下什么都不會(huì )發(fā)生。
數組之間相互拷貝,可以用下面的體式格局:
@d=@c;
這樣要比c語(yǔ)言簡(jiǎn)單多了。同c語(yǔ)言不同,perl的數組是可以動(dòng)態(tài)轉變大小的。是以我們可以追加,刪除數組內的元素。追加一個(gè)元素可以施用這種體式格局:
@c=(@c,"你好");
perl里面有一個(gè)專(zhuān)門(mén)的函數用來(lái)驚醒追加操作叫做push,push的施用方法如次:
push(@c,"你好");
push(@c,("你好","halloha"));
push(@c,@a);
這里可以看到,可以給數組追加一個(gè)元素,一組元素甚或另外一個(gè)數組。另外,在perl的數組中可以放不同類(lèi)型的標量。這一點(diǎn)兒在c程序員的眼中可能有點(diǎn)怪異,可是如 果記住perl里面的一切都是引用就可以了?;蛘呃斫獬蛇@是一個(gè)void類(lèi)型的指針的數組。有了push,就一定有pop。pop就是從數組的最后取出一個(gè)元素。用法為:
pop(@a);
既是可以從數組的末尾加入元素,那末一定也能夠從數組的開(kāi)首加入元素。那末這個(gè)功能是由unshift函數提供的。用法為:
unshift(@c,"你好");
unshift(@c,("你好","halloha"));
unshift(@c,@a);
有了unshif就一定會(huì )有shift了。shift的功能是從數組的開(kāi)首取出一個(gè)元素。用法為:
unshift( @a);
有了操作準組兩端的函數那末一定也會(huì )有操作準組中心部門(mén)的函數,這個(gè)函數就是splice,splice函數有3個(gè)效用。熬頭個(gè)效用是向數組中心的一部門(mén)插進(jìn)去內部實(shí)質(zhì)意義。例如:
@d=(1..9);
my @e=("a".."f");
splice(@d,2,2,@e);
將會(huì )獲得12abcdef56789,注意這里是從第二個(gè)起頭插進(jìn)去,不是從下標為2的元素起頭插進(jìn)去的。splice的第二個(gè)功能是刪除,例如在剛才的代碼上面再加之:
splice(@d,2,6);
將可以獲得1256789;splice的第3個(gè)功能就是刪除到末尾。語(yǔ)法為:
splice(@d,2);
就是從第二個(gè)起頭,刪除到末尾。我們還應該有一個(gè)可以把全般數組合并成一個(gè)標量的函數。這個(gè)函數就是join,join有兩個(gè)參數,熬頭個(gè)參數是合并時(shí)放在元素之間的支解符,第二個(gè)是舉行操作的數組。 例如:
my @g=(1,2,3);
join(" ",@g);
將可以獲得“1 2 3”,還有3個(gè)函數我們昨天已經(jīng)見(jiàn)過(guò)了,就是undef,chop和chomp。undef(@a); 的效用是把@a的內部實(shí)質(zhì)意義清空。chop(@a); 的效用是把數組內每個(gè)元素的末尾去一個(gè)字符。而chomp(@a); 的效用則是把數組內的每一個(gè)元素的末尾的換行符去掉。我們還應該先容一個(gè)函數就是scalar,這個(gè)函數取得數組的長(cháng)度。例如:
my @h=(1,2,3);
scalar(@h);
將可以獲得3??墒俏覀兘?jīng)常不這么用,因為在將數組向標量轉換時(shí)就會(huì )返回數組的長(cháng)度,例如次面的操作就可以。
my @i=(1,2,3,4);
print @i."\n";
將會(huì )打印出4。 好了,今天就到這里吧,最后是一個(gè)概括了今天大部門(mén)內部實(shí)質(zhì)意義的程序。我寫(xiě)的。中心會(huì )輸出很多錯誤信息。呵呵。
#!/user/bin/perl -w
use strict;
{ $|=" ";
my @a;
@a=(1,2,3);
@a[4,6]=(23,34);
#print $a[5];
#quoted because it would cause error
my @b;
@b=("because","haul");
push(@b,"grand");
print @b;
print "\n";
push(@b,("puppy","kitty"));
print @b;
print "\n";
push(@b,@a);
print @b;
print "\n";
push(@a,@b);
print @a;
print "\n";
my @c;
@c=(1,2,3,"你好");
print @c;
print "\n";
pop(@a);
print @a;
print "\n";
my @d;
@d=(1..9);
print @d;
print "\n";
my @e=("a".."f");
splice(@d,2,2,@e);
print @d;
print "\n";
splice(@d,2,6);
print @d;
print "\n";
}
嘻嘻,程序很長(cháng),不外試著(zhù)運行一下,全是上面所講的內部實(shí)質(zhì)意義的應用,加深一下你的印象嗎。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。