今天看了第4章,是關於array。

array 是@a , 而$a 是一般的變數

array 的assign方法

@a=(2,4,5);

array 裡的元素不限定特定type ,所以可以寫成

@a = (2,"hi", 34);

如果把array assign 給變數的話,

$h = @a;

則$h 裡面存的是@a 的size 。

若是

@a = $h,則@a 就變成只有一個元素,是$h。

其他比較特殊的assign 方法,像是:

($a,$b) = (1,2) ,則$a 是1 ,$b 是2

($a,$b)=(1,2,3,4) ,結果同上。

若是

($a,@list) = @list ,則$a 會是@list 的第一個元素,而@list 會少一個元素。

怎麼reference array 裡的值呢?

若array 叫@list

$list[0] = 17 ,表示@list 的第一個元素。

因為PERL 在array 使用上,並沒有事先宣告size大小。

因此如果直接打

$list[100] = 0 ,則@list 會長度就馬上變成101 了。

另外有一個特殊符號:$#list ,這個表示最後一個element 的index ,所以@list 的size 會是$#list +1。

也可以使用scalar(@list)。

在array 中,我們還能取得array 的subset 。語法如下:

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

@list =@list[1,3];

則list 裡會存放2,4,這邊[1,3]不是範圍,而是取哪些index 。

我們也可以利用foreach 來index array 的值。

像是。

@list =(1,2,3,4,5);

foreach $l (@list)

{

    $l = 1;

}

則@list 會變成(1,1,1,1,1)。

也可以

foreach $l (0..99)

{ .... }

這會跑100 次。

接下來介紹一些function

reverse function

@n = (1,2,3);

@rn = reverse @n;

@rn 裡存(3,2,1);

sort function

sort 這邊是用在string 上,而不是number 上。

@list=(1,3,102,4);

@list = sort @list;

會變成(1,102,3,4);

splice function

splice 是用在砍array 的元素,或增加。

@list =(2,4,6,8,10);

splice(@list,3);

則會把index 3 以後的砍掉,變成(2,4,6)

也可以設定砍的範圍

@list =(2,4,6,8,10);

splice(@list,2,2);

則會砍index 2 後2 個,剩下(2,4,10);

另外,也可以在填一下新的元素進去

@list=(2,4,6,8,10);

@new=(7,6,5);

splice(@list,2,2,@n);

會變成(2,4,7,6,5,10);

function about stack

push @stk, 1;

push @stk,2,3;

會印出1,2,3

拿出值利用pop

$value = pop @stk;

split function

split /pattern/, Expression, (optional limit)

@fruit = split /,/, "A,B,C,D,E";

利用, 分開"...."

fruit 裡有5個元素。

@chars = split //, "abcde";

chars 裡存 chars[0] = a, chars[1] = b,....

差不多就是這樣吧,最後在講一個東西就是$ARGV,這個裡面會

存command line 丟進來的東西。

文章標籤
全站熱搜
創作者介紹
創作者 lettice0913 的頭像
lettice0913

斑的家

lettice0913 發表在 痞客邦 留言(0) 人氣(176)