【发布时间】:2014-07-27 18:31:27
【问题描述】:
我有一个示例哈希数据 %dsr_config 转储为
$VAR1 = 'dc';
$VAR2 = {
'Alias' => 'DC',
'Address' => 'street1, street2, '
};
$VAR3 = 'dsr';
$VAR4 = {
'daddr' => '192.168.1.1',
'dscp' => '2',
'Vip_enabled' => 'True',
'BL' => '4,8',
'subnet' => '255.255.255.255'
};
$VAR7 = 'backup';
$VAR8 = {
'backup' => 'enabled'
};
现在,我正在尝试查找哈希
$VAR3 = 'dsr';
$VAR4 = {
'daddr' => '192.168.1.1',
'dscp' => '2',
'Vip_enabled' => 'True',
'BL' => '4,8',
'subnet' => '255.255.255.255'
};
因为它的值 'Vip_enabled' => 'True',
我写的是
foreach my $key1 (keys %dsr_config) {
foreach my $key2 (keys $dsr_config{$key1}){
if ($key2 =~ /Vip_enabled/){
%dsr_config = $dsr_config{$key1};
}
}
}
print Dumper %dsr_config;
我正在尝试仅使用所需数据覆盖现有的 %dsr_config。但我得到了
Reference found where even-sized list expected at ./test.pl line 43.
Type of argument to keys on reference must be unblessed hashref or arrayref at ./test.pl line 41.
Line 43 is %dsr_config = $dsr_config{$key1};
Line 41 is foreach my $key2 (keys $dsr_config{$key1}){
我在这里做错了什么?这个错误是什么意思?
【问题讨论】: