事实上你这样做是没有意义的。如果存在该键,你就不是添加新的,只能改变原键值。所以只需要判断该键是否存在。
你如果有这种需求,大概是需要用二级哈希
(!exists($a{$key1}->{$key2})) and ($a{$key1}->{$key2} = $value);追问谢谢!你说的有道理,我的需求可能也没有表达清楚。
比如我现在有个表格:
ID 时间
001 11:10
001 12:13
002 10:12
002 12:34
002 12:28
……
然后我要关注的就是哪个‘小时’出现的次数最多,但比如ID002有两个12点的,那这时就只能算一次,不同ID的小时是累计的(不知道我说清楚了没有……)
抱歉没看清你的需求,重新回答一下。仔细看了一下,我感觉你还是使用一个二级哈希作为判断,另用一个哈希作为值求和。判断是否存在就看二级哈希是否存在(if (!exists $hash{$k1}{$k2}))或者直接看值也是一样的(if (!$hash{$k1}{$k2}))。对你这的数值完整示例程序如下:
use strict;哦哦好的谢谢!我先去试试看XD
请问$checkhash{$hour}{$id} = 1;是什么意思?
请问$checkhash{$hour}{$id} = 1;是什么意思?
其实没啥意思,就是给这个二维hash赋了一个值,下次再用exists检查这个hash时,就不会不存在了。