in reply to Reading data from file

The DBD::AnyData module provides a SQL interface to "pipe delimited" files of the format you describe. You can treat the flat file as a database table and query or modify it with SQL, even use joins on several tables.

The AnyData module provides a tied-hash interface to the same kinds of data.

As a new perl person, you certainly should learn how to parse these yourself as suggested in other responses. OTOH, if you have database experience you are probably better off using a database approach in the long run. Even if you are not, you may want to consider using one of the modules which take care of details such as file locking (which you may or may not need).