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;