Einen Schritt geschickter wird es dann, wenn man nun noch das Datenbank-Modul DBI einsetzt - und dazu den Datenbanktreiber (DBD) für CSV-Dateien -> DBD::CSV.
Normalerweise wird auch hier aus den CSV-Dateien die 1. Zeile für die Attribut-Namen verwendet. (geht aber auch anders). Dann kann man die Dateien wie eine Datenbank öffnen und mit SQL-Anfrage auf die Datensätze zugreifen:
'SELECT * FROM personen WHERE id > 17'
Kann der auch "group by", was für die vorliegende Aufgabenstellung dann die passende Idee wäre?