my %DATA_HASH; for(my $i=0;$i<@FUNCTION_ARRAY;$i++) { if($FUNCTION_ARRAY[$i]->gi() eq 'TestFunction') { my $temp_func = $FUNCTION_ARRAY[$i++]->att('name'); while($FUNCTION_ARRAY[$i]->gi() eq 'Parameter') { my $temp_param = $FUNCTION_ARRAY[$i++]->att('name'); while($FUNCTION_ARRAY[$i]->gi() eq 'ParameterValue') { push(@{$DATA_HASH{$temp_func}->{$temp_param}},$FUNCTION_ARRAY[$i++]->att('value')); } } $i-- if($FUNCTION_ARRAY[$i]->gi() eq 'TestFunction'); } }