my $completed_courses = [...]; my $schedule = {...}; #### my %completed; for (@$completed_courses) { $completed{$_->{title}} = undef; } #### for (keys %$schedule) { delete $schedule->{$_} if exists $completed{$schedule->{$_}{Course}}; }