my @array1 = ...; my @array2 = ...; my %hash = map {$_ => 1} @array1; foreach my $e (@array2) { next unless exists $hash{$e}; die "Failure" if --$hash{$e} < 0; } die "Failure" if grep $_, values %hash; print "Success";