http://www.perlmonks.org?node_id=356272


in reply to When hashes aren't enough

Using OOP doesn't actually require packages and bless()ing. It just means you have to do something in an object-oriented way :)

With that in mind, it depends on what you're using the information *for*. For example, if you only need to process the color information for everything at once, using $color{'car'} and $color{'bike'} make perfect sense.

On the other hand, if you needed to keep the different attributes of an item together (for example, for storage to a file on disk), you might prefer to do this:

$car = { wheels => 4, doors => 4, color => 'blue', trans => 'auto' }; $bike = { wheels => 2, color => 'red', };
The reason for doing this is that, with all the attributes of an item in one hash, it's easy to pass that item around to whatever might need it. For example, you can pass it to Storable's freeze method and preserve your car in a disk file (for thawing by another script, or a later instance of your own). Or, you could pass a hash to a function that does something generic to whatever is passed in (like telling you if its turn signals automatically shut off; vehicles without steering wheels don't have that). This sort of design is at the heart of OO.
--Stevie-O
$"=$,,$_=q>|\p4<6 8p<M/_|<('=> .q>.<4-KI<l|2$<6%s!<qn#F<>;$, .=pack'N*',"@{[unpack'C*',$_] }"for split/</;$_=$,,y[A-Z a-z] {}cd;print lc