$描述是从格式YAML输入perl的永恒循环问题
main_key:
-
key1:value2
key2:value2
-
key1:value1
key2:value2
的YAML文件输入基本上是散列阵列的散列。
I输入$描述和处理内散列如下:
while ( my ($mod, $defined) = each %{ $description }) {
my $index = 0;
foreach (@{ $defined }) {
while (my ($key, $value) = each %{ $_ }) {
process ($key, $mod, $description, $index);
}
$index = $index + 1;
}
}
当某些“关键字”作为键I代替添加更多的键,值对于内散列 功能1()和函数2()返回一个哈希指针。
sub process {
my ($key, $mod, $description, $index) = @_;
my $parameters;
if ($key eq 'keyword') {
$parameters = function1();
}
else {
$parameters = function2();
}
$description->{$mod}[$index] = { %$parameters, %{$description->{$mod}[$index]} };
}
这里的问题是,“虽然(我($键,$值)=每%{$ _})”在主代码运行永远的,一遍又一遍使用相同的密钥和值。
是这个答案并不让我感到惊讶。 – evolution 2013-05-10 23:51:32
但是我做了散列的副本,并尝试修改副本。同样的结果。我检查以确保HASH引用指向单独的内存。基本上我通过了$ description_copy(指向不同的mem和原始描述的副本到进程函数 – evolution 2013-05-10 23:52:34