my @a = ( 1,1,1,1,1,2,2,2,3,3,4,5,6); my @b = ( 1,2,3,4,5,6 ); my %d; my @difference; $d{ $_ } ++ for @a; $d{ $_ } -- for @b; for my $key ( keys %d ) { next if ( $d{ $key } <= 0 ); push @difference, $key for ( 1 .. $d{ $key } ); } print sort @difference;