I second the recommendation for a database. DBD::SQLite is easy to install, so are DBD::CSV and DBD::AnyData the later two would allow you to store the information in human-readable text files if that's a requirement. None of the three requires installation or maintenance of a separate database server. The basic design you need is one table that lists company names and addresses and a second table that has the company name as a field. Then, rather than storing the company names twice, you simply join the two tables when you want to access the information. If databases and SQL are a mystery to you, you could use AnyData which provides a tied hash interface to files in many formats.
For, example if you have two files like this:
[company.csv]
company,address
foo,NY
bar,CA
[employee.csv]
name,company
Joe,foo
Sue,bar
This script will print out each person with their company name and address:
#!perl -w
use strict;
use AnyData;
my $company = adTie('CSV','company.csv');
my $employee = adTie('CSV','employee.csv');
while (my $person = each %$employee) {
printf "%s : %s :%s\n"
, $person->{name}
, $person->{company}
, $company->{$person->{company}}->{address}
;
}
|