in reply to How to use a splice inside a foreach

And here's a complete run-able grep version with some tweaks.

#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11158852 use warnings; sub filterExclude { my ($ar, $someConfig) = @_ ; @$ar = grep { not exists ( $someConfig->{$_} ) && $someConfig->{ $_ }{ Exclude} } @$ar; } my @ar = 1 .. 10; my %config; $config{$_}{Exclude}++ for 3, 8; filterExclude( \@ar, \%config ); use Data::Dump 'dd'; dd { ar => \@ar, config => \%config };

which Outputs:

{ ar => [1, 2, 4 .. 7, 9, 10], config => { 3 => { Exclude => 1 }, 8 => { Exclude => 1 } }, }