【perl】perl哈希(二)——哈希的操作
2020-06-11 本文已影响0人
虫虫工工队
创建哈希
%hash_A=();
给hash赋值
- 需要键、值
最简单方法:使用列表
%hash_A=("key1",value1,"key2",value2,"key3",value3...)
- 逗号不好看,使用=>胖箭头解决键值不易区分的问题
%hash_A=("key1"=>value1,"key2"=>value2,"key3"=>value3)
- 使用胖箭头的时候key的引号可以省略
方法二:指定键进行赋值
- 但每次只赋值1个
$hash{"key1"}=value1;
$hash{"key2"}{"key3"}=value2;##多维hash
- 现实中会结合foreach等结构赋值
hash之间赋值
- 使用等式赋值,是拷贝操作,不会同时改变
%hashA=%hashB
举例
- 在print的引号里,哈希取值时的引号可以省略
- 注意:在哈希里,不要用123作为键又用字符串的“123”作为键,打印取值的时候哈希只会取“123”为键的值
修改、添加元素
$hash_name{"key"}=value;
- 不存在就会创建
- 在2维哈希中添加一维哈希会怎么样?
-可以正常加入,可以同时存在不同维度的哈希
删除hash
- delete
delete($hash_name{key})
delete($hash_name{key}{key2}) ##多维删除
- 多维哈希的删除会怎么样呢?
-连同后面的维度也被删除
哈希的切片
- 把想要的元素提取到一个新的数组
my %hashname=("key1"=>"value1","key2"=>"value2")
my @array = @hashname{"key1","key2"};##大括号
将哈希里对应键的值,给到数组里面
哈希的合并
- 必须是括号
- 键一样的情况下,后面的哈希覆盖前面的哈希
%hashC=(%hash_B,%hash_A)