#!/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 };