package Quaint; use strict; use Tie::Scalar; use Carp; use UNIVERSAL 'isa'; sub TIESCALAR { my ( $pck, @distribution ) = @_; croak "No distribution given." unless @distribution; bless { data => \ @distribution, state => $state }, $pck; } sub FETCH { my $self = shift; my $distribution = $self->{distribution}; $distribution->[ rand @$distribution ]; } sub STORE { my ( $self, $distref ) = @_; croak "No distribution given." unless isa($distref, "ARRAY"); my $orig_dist = $self->{'distribution'}; push @$orig_dist, @$distref; }