Perlのソートサブルーチンを使ったカスタムソート

PerlのSort関数はかなり拡張性が高い仕様になっているようだ。
任意の関数を渡して、並び順を好きなように改造できる。ソートサブルーチンが-1を返すものを先に、1を返すものを後に来るように並べ替えてくれるので
そのような結果を返すようにソートサブルーチンを調整してやればどんなものをどのようにも並べ替えられるようだ。
しかしデフォルトで$aと$bを取るようになっていたり、便利な反面多少わかりづらい。

my @list_a = (12, 34, 56, 44, 33, 22, 11, 910);
my @list_b = (910, 34, 78, 99, 11);

my @list = sort {(grep {$_ eq $a} @list_b) ? -1 : 1} @list_a;

例えばこんな風にすると、{(grep {$_ eq $a} @list_b) ? -1 : 1}の部分がソートサブルーチンなわけだけれども、
要素が@list_bの中にあるなら-1になる。ソートサブルーチンの返り値が-1のものを前方に並べる仕様なので、その要素が前方に来るようにソートしてくれます。