学习 pop push
增加新元素到数组的尾端pop 负责取出数组中最后一个元素并将其作为返回值返回
@will = 5..9
$jack = pop(@will)# $jack 变为9
@will 变为(5,6,7,8)
push 添加一个元素到数组的末尾
shift unshift 是对数组的开头进行操作
splice 从中间插入
@will = qw(1 2 3 4);
@move = splice @will, 1, 2, qw(8);
@move = qw (2 3)
@will = qw (1 8 4)
双引号 使得数组内插使用
foreach语句可以一项一项地读数据同时我发现目前我只会$ 不能用@ 注意区分 $ 控制变量与@ $_为默认变量使用reverse逆序排列数组each 理清楚概念什么是标量上下文什么是列表上下文在标量上下文中使用产生列表的表达式在列表上下文中使用产生标量的表达式scalar 强制指定标量上下文
scalar @will列表上下文中的子程序
返回值的注意事项
sub
在子程序的执行过程中,它会不断进行运算,最后一次的结果都会被自动当成子程序的返回值。
My () 创建私有变量
My操作符不会改变变量赋值时的上下文
也可以创建私有数组
使用 use strict 编译指令
return
3 Hash Array(Associative Array):
perl hash 常见用法
基本用法
# 初始化 %h为空数组%h = {};# 用数组初始化%h为 a=>1, b=>2%h = (‘a’, 1, ‘b’, 2);# 意义同上,只是另一种更形象化的写法。%h = (‘a’=>1, ‘b’=>2);#如果key是字符串,可以省略引号。下面这行和上面那行是一样的%h = (a=>1, b=>2);
清空hash
undef %h
得到hash的所有键值
# 得到所有keys,顺序取决于hash函数,或者说是乱序
@all_keys = keys %h;
# 所有键值,是按hash的值从大往小排列的。值的比较是数字比较(比如说,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的长度
想要知道一个hash存放多少数据
$hash_size = keys %h
# 把%h的长度放到$hash_size中
print scalar keys %h, “\n”
# 打印%h的长度。这里用了scalar来返回数组长度。
遍历一个hash
while (my ($k, $v) = each %h) {print “$k —> $v\n”;}
Reference引用
Reference类似于C/C++的指针
$h_ref = \%h;
# 获得一个hash的reference%aHash = %{$h_ref};
# 把hash reference当成hash用$value = $h_ref->{akey}
# 这个和%h{akey}是一样的
传递hash到函数
一般都是传递一个reference到函数
%h = ();$h{a}=1;foo(\%h)print $h{b}, “\n”;
# 打印出2。
这个值来自于函数foo() sub foo {my ($h) = @_;print $h->{a}, “\n”;
# 打印出1$h->{b} = 2;}
函数返回hash,或者hash引用(hash reference)
函数可以返回hash
sub foo {my %fh;$fh{a} = 1;return %h;} my %h = foo();print