foreach (values %in) { /(.*?)\|(.*)/; $out{$2}{$1} = 1; }