Not quite as good as
broquaint's
score, but close:
y/:;/ /,split,$i=shift@_,$h{$i}=[@_]for<DATA>;
Points to anybody who can explain why
$above_code =~ s/$i=shift@_,$h{$i}=/$h{shift()}=/ won't work the same as $above_code.
--
Love justice; desire mercy.