package Base::Hosts; use strict; use warnings; # Make your host objects my @hosts = map Base::Host->new( $_ ), ( { directory => 'C:/Documents and Settings/ME/My Documents/fantasy', 'link' => q(http://localhost), user => q(ME), name => q(My Domain), mail => q(ME@localhost), }, { directory => '/ftp/pub/www/fantasy', 'link' => q(http://www.xecu.net/fantasy), user => q(Fantasy), name => q(Fantasy's Realm), mail => q(fantasy@xecu.net), }, { directory => '/home/lady_aleena/var/www', 'link' => q(http://lady_aleena.perlmonk.org), user => q(Lady Aleena), name => q(Lady Aleena's Home), mail => q(lady_aleena@perlmonk.org), }, ); # Put them in a hash by directory my %hosts_by_dir = map { $_->directory, $_ } @hosts; # Host class definition. BEGIN { package Base::Host; use strict; use warnings; sub new { my $class = shift; my $self = {}; bless $self, $class; my %arg = @_; for my $attr ( qw/ link user name mail directory / ) croak "Required attribute '$attr' not supplied" unless exists $arg{$attr}; $self->{$attr} = $arg{$attr}; } return $class; } sub link { my $self = shift; return $self->{'link'}; } sub user { my $self = shift; return $self->{user}; } sub name { my $self = shift; return $self->{name}; } sub mail { my $self = shift; return $self->{mail}; } sub directory { my $self = shift; return $self->{directory}; } 1; }