Hallo,
ob es schneller geht, solltest du selbst herausfinden.
Weniger geht immer, z.B.:
warn join(" ", grep !{map(($_ => 1), split/\s+/, $seen)}->{$_}, split/\s+/, $all);
allerdings würde ich dringend zu einer lesbaren variante raten, die ohne kommentare auskommt!
hth