$description 是来自格式为 yaml 文件的输入
main_key:
-
key1:value2
key2:value2
-
key1:value1
key2:value2
基本上这是哈希数组的哈希。
我输入 $description 并按如下方式处理内部哈希:
while ( my ( $mod, $defined ) = each %{ $description } ) {
my $index = 0;
foreach ( @{ $defined } ) {
while ( my ( $key, $value ) = each %{ $_ } ) {
process ( $key, $mod, $description, $index );
}
$index = $index + 1;
}
}
当某些“关键字”用作键时,我替换添加更多键、值对到内部散列函数 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]} };
}
这里的问题是主代码中的“while (my ($key, $value) = each %{ $_})”会永远运行,一遍又一遍地使用相同的键和值。