sub addexit { my ($self, $exit, $direction) = @_; $self->{'_exits'}->{$direction} = $exit; } sub addhiddenexit { my ($self, $exit, $direction) = @_; $self->{'_hiddenexists'}->{$direction} = $exit; } sub showexits { my ($self) = @_; my $message = join "\n", 'The following exits are available:', map { ' $_\n' } sort keys %{ $self->{'_exits'} }; return $message; } sub exit { my ($self, $direction) = @_; if ( exists($self->{'_hiddenexits'}->{$direction}) ) { return $self->{'_hiddenexits'}->{$direction}; } if ( exists($self->{'_exits'}->{$direction}) ) { return $self->{'_exits'}->{$direction}; } return undef; } #### # map file A-B # key file KEY : A NAME : Town Square KEY : B NAME : store #### - : east / west | : north/south \ : nw/se / : ne/sw X : ne/sw/nw/se ^ : north v : south > : east < : west . : hidden (n/s or e/w, depending on placement)