in reply to Efficient algorithm needed to split Set::IntSpan objects

When iterating over all elements is not an option, you could use a sparse array (i. e. a hash). The hash stores the 'differential' of the spans. Your first line would be stored as:

3 => 1 11 => -1
Of course your implementation has to loop once with ++ and -- over the spans. After sorting by keys the output, i. e. 're-integration', becomes trivial(++ and -- of a counter). A table of x and y values (only when there are changes) might be a better output of your box plot.