今天看了第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 丟進來的東西。
