我正在为配置文件工作,该配置文件包含未知数量的各种对象,并且都有其自己的字段/值对。将哈希的内容复制到另一个更大的哈希
配置文件看起来是这样的:
ObjectType1
name Alpha
host 127.0.0.1
ObjectType1
name Beta
host 10.11.12.13
ObjectType2
name AlphaPolicy
type This
useExtraWidgets true
所以我想给每个单独的对象解析到字段/值的散列,伟大的工程。让我感到沮丧的是,我希望将这些单个对象中的每一个添加到一个更大的散列中,以保存整个配置。这个较大的散列应该为每个对象类型都有一个数组,该数组包含一个特定对象的字段/值。我根本无法弄清楚如何以合理的方式将字段/值的散列推送到较大的散列。
这是一些带有注释的伪代码 - 有人可以帮助我在哪里需要@s,$ s,括号等。我把它称为伪代码,因为它实际上不工作。它什么都不打印。谢谢。
my %hash1,%hash2;
$hash2{'name'} = "Alpha";
$hash2{'host'} = "127.0.0.1";
push @{$hash1{'ObjectType1'}}, %hash2;
undef %hash2;
$hash2{'name'} = "Beta";
$hash2{'host'} = "10.11.12.13";
push @{$hash1{'ObjectType1'}}, %hash2;
undef %hash2;
$hash2{'name'} = "AlphaPolicy";
$hash2{'type'} = "this";
$hash2{'useExtraWidgets'} = "true";
push @{$hash1{'ObjectType2'}}, %hash2;
print $hash1{'ObjectType1'}[0]{'name'}; #I want this to print "Alpha"
print $hash1{'ObjectType1'}[1]{'host'}; #I want this to print "10.11.12.13"
print $hash1{'ObjectType2'}[0]{'name'}; #I want this to print "AlphaPolicy"
请注意,您应该为变量创建比'%hash1'和'%hash2'更好的名称。 – Borodin
哦,是的,绝对。这只是我整理的一个仿真测试案例。 – largesock
您在这里编写的用于世界消费的样本“人工”代码具有非常差的标识符,而最终的代码只能由您自己和其他人阅读(可能会)具有“正确”名称。 – Borodin