學(xué)習(xí) pop push?
增加新元素到數(shù)組的尾端pop 負(fù)責(zé)取出數(shù)組中最后一個(gè)元素并將其作為返回值返回
@will = 5..9
$jack = pop(@will)# $jack 變?yōu)??
@will 變?yōu)椋?们衙,6泪掀,7柑肴,8)
push 添加一個(gè)元素到數(shù)組的末尾
shift unshift 是對(duì)數(shù)組的開頭進(jìn)行操作
splice 從中間插入
@will = qw(1 2 3 4);
@move = splice @will, 1, 2, qw(8);
@move = qw (2 3)
@will = qw (1 8 4)
雙引號(hào) 使得數(shù)組內(nèi)插使用
foreach語句可以一項(xiàng)一項(xiàng)地讀數(shù)據(jù)同時(shí)我發(fā)現(xiàn)目前我只會(huì)$ 不能用@ 注意區(qū)分 $ 控制變量與@ $_為默認(rèn)變量使用reverse逆序排列數(shù)組each 理清楚概念什么是標(biāo)量上下文什么是列表上下文在標(biāo)量上下文中使用產(chǎn)生列表的表達(dá)式在列表上下文中使用產(chǎn)生標(biāo)量的表達(dá)式scalar 強(qiáng)制指定標(biāo)量上下文
scalar @will列表上下文中的子程序
返回值的注意事項(xiàng)
sub
在子程序的執(zhí)行過程中宇色,它會(huì)不斷進(jìn)行運(yùn)算聪蘸,最后一次的結(jié)果都會(huì)被自動(dòng)當(dāng)成子程序的返回值。
My () 創(chuàng)建私有變量
My操作符不會(huì)改變變量賦值時(shí)的上下文
也可以創(chuàng)建私有數(shù)組
使用 use strict 編譯指令
return
3 Hash Array(Associative Array):
perl hash 常見用法
基本用法
# 初始化 %h為空數(shù)組%h = {};# 用數(shù)組初始化%h為 a=>1, b=>2%h = ('a', 1, 'b', 2);# 意義同上祈远,只是另一種更形象化的寫法市埋。%h = ('a'=>1, 'b'=>2);#如果key是字符串,可以省略引號(hào)互墓。下面這行和上面那行是一樣的%h = (a=>1, b=>2);
清空hash
undef %h
得到hash的所有鍵值
# 得到所有keys必尼,順序取決于hash函數(shù),或者說是亂序
@all_keys = keys %h;
# 所有鍵值篡撵,是按hash的值從大往小排列的判莉。值的比較是數(shù)字比較(比如說,10>9)
@all_keys = sort{$h{$b}<=>$h{$a}} (keys %h);
# 所有鍵值育谬,是按hash的值從小往大排列的券盅。值的比較是字符串比較(比如說,'10' < '9')
@all_keys = sort{$h{$a} cmp $h{$b}} (keys %h);
判斷hash是否包含key
exists($h{$key});
Hash的長(zhǎng)度
想要知道一個(gè)hash存放多少數(shù)據(jù)
$hash_size = keys %h
# 把%h的長(zhǎng)度放到$hash_size中
print scalar keys %h, "\n"
# 打印%h的長(zhǎng)度膛檀。這里用了scalar來返回?cái)?shù)組長(zhǎng)度锰镀。
遍歷一個(gè)hash
while (my ($k, $v) = each %h) {print "$k ---> $v\n";}
Reference引用
Reference類似于C/C++的指針
$h_ref = \%h;
# 獲得一個(gè)hash的reference%aHash = %{$h_ref};
# 把hash reference當(dāng)成hash用$value = $h_ref->{akey}
# 這個(gè)和%h{akey}是一樣的
傳遞hash到函數(shù)
一般都是傳遞一個(gè)reference到函數(shù)
%h = ();$h{a}=1;foo(\%h)print $h娘侍, "\n";
# 打印出2。
這個(gè)值來自于函數(shù)foo() sub foo {my ($h) = @_;print $h->{a}, "\n";
# 打印出1$h->泳炉 = 2;}
函數(shù)返回hash憾筏,或者h(yuǎn)ash引用(hash reference)
函數(shù)可以返回hash
sub foo {my %fh;$fh{a} = 1;return %h;} my %h = foo();print