#!/usr/bin/perl use strict; use Data::Dumper; my %record; while() { chomp; my ($key, $sub_key, $val) = split ":"; $record{$key}->{$sub_key}->{$val} = 1; } print Dumper \%record; __DATA__ EQUIPMENT: BASEBALL: ACCESSORI EQUIPMENT: BASEBALL: BALLS EQUIPMENT: CYCLING EQUIPMENT: GOLF: BAGS EQUIPMENT: GOLF: BALLS EQUIPMENT: OTHER BALL SPORTS: EQUIPMENT: OTHER BALL SPORTS: EQUIPMENT: RACQUET SPORTS: BAL EQUIPMENT: RACQUET SPORTS: RAQ