Hrrrm. Given how often we lookup whether something is a sticky entry, as opposed to writing the order of the sticky entries, I'm beginning to lean towards the notion of storing these as a hash rather than as an array. 

With a hash, you can lookup existence in the array pretty easily. That is, instead of doing a for-loop over all the stickies, you'd just do: 

    my %stickies = $u->sticky_entries;
    return 1 if $stickies{$ditemid};

Of course the implementation of sticky_entries would have to change, but it's something worth thinking about *g*