in reply to how to loop each anonymous hash in an array of hashes

You do indeed have an array of hashes (or rather an array of hash references), and to loop through them is actually quite easy:
foreach my $var ( @{ $form->{PR} } ) { if ($var->{'id'} == $form->{'id'}) { print qq|elem->key $var->{id} eq $form->{"id"}\n|; print qq|\t\t cleared? $var->{cleared} $form->{"cleared"}\n|; if ( $var->{cleared} != $form->{"cleared"} ) { $var->{cleared} = $form->{"cleared"}; print qq|\t\t FIXED $var->{cleared} $form->{"cleared"}\n|; } } else { print qq|var id: $var->{id} ne form $form->{"id"}\n|; } }
Output:
var id: 10368 ne form 12594 var id: 12585 ne form 12594 var id: 12592 ne form 12594 elem->key 12594 eq 12594 cleared? 0 1 FIXED 1 1