my %sites_config = parse_sites_config(); sub parse_sites_config { open SITES_CFG, "< $sites_conf" or die "Couldn't open $sites_conf: $!"; my %options; while() { chomp; s/\/\/\s+.*//g; # Get rid of comments; next unless length; my($key, $operator, $value) = split/\s*(=>?)\s*/, $_, 2; if ($operator eq "=>") { push @{$options{sites}}, {site_name => $key, site_url => $value}; } else { $options{sites}[-1]{$key} = $value; } } return %options; } # Later.. for my $site (@{$sites_config{sites}}) { print $site->{site_name}, "\n"; }