use strict; use warnings; use Data::Dumper; my @successarray; for my $value (182,1000,201,300,124,1000,201,300,124) { push @successarray, {ydayopen => $value} } my $fromopenmove = 200; for (my $i = 0;$i < @successarray;$i++) { if ($successarray[$i]->{'ydayopen'} > $fromopenmove) { splice(@successarray,$i,1); $i--; # This is the part that you might not think of } } print Dumper(\@successarray);