So how would you do it? Keeping in mind that you want it to be re-useable and as user friendly as possible.
One of my favourite answers (right up there with "yes and no") - it depends ;-)
If there is a natural aggregate object then that's the appropriate place for the behaviour to sit. If there isn't a natural aggregate object then I'd just use for directly.
Having a special object or subroutine just to encapsulate a normal perl idiom would seem overkill, unless it would naturally form part of your object model.