配列から重複があった要素のみを取り出す

「配列から他の要素と重複してる要素のみを取り出すってどうすればいい?」という質問を受けて、書いてみました。

#!/usr/bin/perl
use strict;
use warnings;

# 元の配列
my @array = ( "a","c","b","b","e","a","c","c","c","d", );

my %count;
my @result;
for my $key (@array) {
    $count{$key}++;
    push @result, $key if $count{$key} == 2;
}
print for @result;

実行結果
bac

grepを使って「重複を取り除く」っていうのがよく紹介されていますが、「重複しているもののみ残す」となると単純に逆にするわけにもいかないですよね。

世の中には華麗な解決方法があるんだろうか。。