Hi Todd,
I would like to spend one line or two on your OOP keeper. One important
aspect of object oriented programming is dat you encapsulate your
knowledge into an object. That is, structures and other variables should
be kept invisible to the user of your object. That way, you are able to
change your algorithms in your object without hurting people in the future.
This is what I see all the time in your keeper;
has SomeType $.some-variable;
The variable is, as you know, readable from outside your object, but it
also creates a dependency on that variable by the users of your class.
Once used, you cannot change it without causing pain somewhere else.
So what you must do normally;
has SomeType $!some-variable;
and the other sparingly, like you've shown using native structures!
Now that I am at it, don't use 'self.some-variable' from within your
object. It is faster and also better to read to just write
'$!some-variable' whether it is made readable or even writable.
Marcel