in reply to Perl OOP

Inheritance can be discouraged by using the one arg form of bless or by using the technique of using separate packages for class and instance methods described in Re: OO - best way to have protected methods (packages). Here is another example:
use strict; package Queue; sub new { bless [], 'Queue::__Internal'; } package Queue::__Internal; sub push { my ( $self, $item ) = @_; push @{$self}, $item; } sub pop { my ( $self ) = @_; shift @{ $self }; } sub size { my ( $self ) = @_; scalar @{ $self }; } 1;