in reply to Sports::Baseball::Teams

I don't quite get this. From an object design standpoint, you have constant objects with no internal state, and an object class that is not particularly reusable because there's no real allowances for subclassable items. This means it's not really an object you want, but a package of subroutines instead. About the only thing you're using of the object-ness is the overloading.

Worse yet, the following code fails (I think):

## first put all my favorite teams in a list: my @favorites = map { Sports::Baseball::Teams->new($_) } qw(Sea Tex An +a); ## now, let's notice a particular team playing tonight my $tonight = Sports::Baseball::Teams->new("Sea"); # seattle tonight ## let's see if this team playing tonight is one of my favorites: if (grep $_ == $tonight, @favorites) { ## THIS WON'T BE TRUE, BUT IT SHOULD BE }
The reason is that a unique instance is not returned for a given team. Each new call asking for Seattle will return a distinct Seattle object. That's bad. Real bad.

There's your initial review. To get more details, you'll have to pay me. {grin}

If you wanna learn objects well, get Squeak and play with it a bit. Smalltalk rocks.

-- Randal L. Schwartz, Perl hacker