http://www.perlmonks.org?node_id=264354


in reply to Code requested for array intersection count

As 3dan notes, this question has been asked and answered many times. But just for fun, here's a quick (tested) solution that takes a different approach from that of tcf22. This leaves a hash (%counts) with all the results available for later processing. (tcf22's approach could be adjusted to do that also.)
#!/usr/bin/perl -w use strict; my @array_1 = qw/A B/; my @array_2 = qw/A B C D A D B A C/; my %check_1 = map { $_ => 1 } @array_1; my %counts; map { $counts{$_}++ if $check_1{$_} } @array_2; print "$_ : $counts{$_}\n" for keys %counts;
Which results in:

    A : 3
    B : 2

------------------------------------------------------------
"Perl is a mess and that's good because the
problem space is also a mess.
" - Larry Wall