After a lot of discussion (much of which happened on the CB and is not going to be available for posterity, I'm afraid) I think the following is much clearer.
my @sequence_length =
map { length }
join('', @property{@letter}) =~ /\G(X|D+|L+)/g,
my @letter_seq = map {
$curr->[STYLE]
. ":"
. join(',', splice @letter, 0, $_),
} @sequence_length;
Update: I got pretty positive feedback for this version from the monks involved in the discussion, so that's what I'm sticking with. Thanks everyone!
:)
Makeshifts last the longest.