package Settable; sub new { my($class,$set) = @_; my $self = { Settable_set => $set }; return bless $self, $class; } sub set { my ($self) = @_; $self->{Settable_set} = 1; } package Collection; @ISA = qw(Settable); sub new { my($class, %items) = @_; my $self = $class->SUPER::new(); self->{Collection_set} = { %items }; return $self; } sub list { my($self) = @_; print keys %{$self->{Collection_set}}; }