【perl】学习笔记(八)--复杂数据结构
来源:互联网 发布:js length 对象 编辑:程序博客网 时间:2024/06/13 21:26
本文主要介绍Perl的复杂数据结构,包括:
- 二维数组
- 哈希结构及复杂哈希结构
二维数组
Perl的数组由一对圆括号及用逗号分隔的元素组成(当然还有其他的声明方式)。
如:@array = ("apple","orange","pear");
二维数组声明方式有两种:
- @array = ([1,2,3],[4,5,6],[7,8,9]);这种方式中@array表示数组,如左图。
- $ref_array = [[1,2,3],[4,5,6],[7,8,9]];这种方式中$array表示数组的引用,如右图。
两种声明方式没有太大差别。最终都得到了一个二维数组。针对这两种声明方式,同时也有两种数组读取方式。
- $array[0][0];直接操作数组,指代第一个数组中第一个元素。
- $ref_array->[0][0];由于第二种方式是引用数组,所以使用“->”进行读取,读取的结果同上。
- 由于数组的内部仍是引用,所以两种方法的引用方式还可以写成:$array[0]->[0]和$ref_array->[0]->[0].
Perl使用push函数向数组中新增元素。
perldoc文档关于push方法的说明
使用方法:
push 数组/数组的引用,数值/数值的列表;
针对上面两种操作方法,分别为
push $array[0],2;
push $array->[0],2;
使用delete删除二维数组元素
使用方法:
delete 指定位置元素;
delete方法并非将该元素删除,而是将其值设为undef,数组的长度不会改变,可以重新设置该元素值。
针对上面两种操作方法,分别为
delete $array[2][2];删除二维数组最后一个元素。
delete $array->[2][2];同上。
修改数组值
修改数组内容只需要取得数组元素位置,让后重新对其赋值即可。此处不做赘述。
哈希结构
哈希结构由成对的键值对构成。在内存中以散列值的方式存储,因此并不保持放入顺序。
哈希结构定义方式
%hash = ("Tom",50,"Tony",80,"Cindy",85);这种定义方法,要求括号内元素必须成对出现,阅读上不方便。 %hash = ("Tom"=>50,"Tony"=>80,"Cindy"=>85);推荐使用第二种方法,方便阅读且不易出错。获取哈希结构的key
@key = keys %hash;
获取哈希结构的value
@value = values %hash;
通过key获取value
$value = $hash{key};
遍历哈希结构
foreach $key (keys %hash)
{
print "key:$key value:$hash{$key}\n";
}
向哈希结构中增加元素
$hash{new_key}=value;
删除哈希结构中元素
delete $hash{key};
修改哈希结构的值
$hash{key} = new_value;
复杂hash结构
含有数组的哈希结构
这种方式相对简单,将哈希结构的value替换为数组即可。
整体结构如下
%hash_with_array = {
key1=>[element1,element2...],
key2=>[element1,element2...]
};
由于通过key最终智能获取到数组的引用,因此还需要使用->读取这种结构中数组的值,数组的下标根据根据需求而定。
$value = $hash_wiht_array{key}->[0];
含有哈希结构的数组
和前面一种结构相反,这种结构是将哈希结构作为数组的元素。
数组构成如下:
@array = (
{
key1=>value1,
key2=>value2...
},
{
key1=>value1,
key2=>value2...
}
);
数组中每个位置存放着对哈希结构的引用,同样需要使用->获取想要的值
$value = $array[0]->{key1};
含有哈希结构的哈希结构
类似于第一种,只不过此时value存放的是哈希结构。
结构如下
%hash_with_hash = {
key1=>{
key1=>value1,
key2=>value2...
},
key2=>{
key1=>value1,
key2=>value2...
}
...
};
此结构的取值方式为
$value = $hash_with_hash{outer_key}->{inner_key};
- 【perl】学习笔记(八)--复杂数据结构
- Perl入门(八)Perl的复杂数据结构
- Perl 学习(八)
- Perl基础教程:复杂数据结构
- perl 打印复杂数据结构
- opencv学习笔记(八)-IplImage数据结构
- perl学习笔记八----格式化输出
- perl学习笔记八----格式化输出
- perl笔记(2)-数据结构
- 【OpenCV学习笔记】【函数学习】八(序列数据结构)
- 数据结构学习笔记(八)--最短路径
- 数据结构学习笔记(八)字典、及其线性表描述
- ExtJS学习笔记八,复杂页面功能实现
- perl学习笔记八——文件读写
- 学习笔记(八)
- Perl学习笔记(1)
- Perl学习笔记(2)
- perl学习笔记(一)
- 【perl】学习笔记(七)--调试
- Linux 下编译、安装、配置 QT
- 数据库事务的四大特性以及事务的隔离级别
- [安卓]Android Studio 3.0 JDK安卓环境配置(2017.10)
- jQuery初试弹窗-low
- 【perl】学习笔记(八)--复杂数据结构
- 三子棋简单实现
- [python] 常用正则表达式爬取网页信息及分析HTML标签总结
- nginx
- Jzoj4831 方程式
- HttpServletResponse
- Tslib和Qt 4.8.4与在开发板上的移植
- ls -l 、 du、 df 的区别
- Oracle之复杂查询