in reply to OO or just OOps ?

The main advantage of OO is that it 'hides' your data persistence. So instead of having to constantly call foo($baz,'data1'); qux($baz,'data2'); you could do $baz->foo('data1'); $baz->qux('data2'); As such, its purely semantic, and has (to my knowledge) very little relationship with datastructures, unless you contemplate replacing just a basic hash/access structure with real accessors, such as $hash->{key} vs $obj->get('key');. which would allow you to hide exactly how you return the value of the key. (of course, you could tie the hash, but thats evil...)