my @set1 = ...; my %set1 = map { $_ => 1 } @set1; my ( %h1, %h2 ); ( $set1{ $_ } ? $h1{ $_ } : $h2{ $_ } )++ for @list;