chomp (my $roomcmd = <>) ; #### package Room; sub new { my ($class,$id,$type,$desc) = @_; return bless {id=>$id, name=>$type, detail=>$descr}, $class; } #-------------------------- package House; my $roomid = 1; sub new{ my $class = shift; my $self = { rooms => {}, }; bless $self, $class; return $self; } sub addroom { my ($self, @room_params) = @_; die "No room type specified" unless $room_params[1]; die "I already have a $room_params[1]. No code to add another." if $self->{rooms}{$room_params[1]} ; $roomid++; $room_params[0] ||= $roomid; # Auto-incremented $self->{rooms}{$room_params[1]} = Room::->new (@room_params); return $self; # ALlows "addroom" calls to be chained... } sub findroom{ my ($self, $room_type) = @_; return $self->{rooms}{$room_type}; }