my $delete = join('|', map quotemeta, sort @element_to_delete); my $re = qr/(?:^|,)(?:$delete)(?=,|$)/; for (@key_to_search) { if (defined $new_reports{$_}) { $new_reports{$_} =~ s/$re//g; delete $new_reports{$_} unless length $new_reports{$_} } }