in reply to need help with data manipulation

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} ; }