#!/usr/bin/env perl -l use strict; use warnings; use Data::Dumper; my $form = { id => 12594, cleared => 1, PR => [ { id => 10368, cleared => 0 }, { id => 12594, cleared => 0 }, ], }; print '*** BEFORE ***'; print Dumper $form; for my $hash_ref (@{$form->{PR}}) { if ($hash_ref->{id} == $form->{id}) { $hash_ref->{cleared} = $form->{cleared}; } } print '*** AFTER ***'; print Dumper $form;