#!/usr/bin/perl -w use strict; my %index; my @array; my $headerline = ; chomp $headerline; $headerline =~ s/^#//; my @header = split /:/,$headerline; @index{@header} = (0..$#header); while () { chomp; my @fields = split /:/,$_; for my $key (keys %index) { $array[$. - 1]{$key} = $fields[$index{$key}]; } } # examples print "1st name : $array[1]{'name'}\n"; print "3rd category : $array[3]{'category'}\n"; # traverse entire array for my $row (1..$#array) { print "Row $row: "; for my $keyname (keys %index) { print "$keyname=$array[$row]{$keyname} "; } print "\n"; } __DATA__ #name:surname:category tiger:woods:golfer tyler:hamilton:f1 james:stewart:supercross roger:federer:tennis #### 1st name : tiger 3rd category : supercross Row 1: name=tiger category=golfer surname=woods Row 2: name=tyler category=f1 surname=hamilton Row 3: name=james category=supercross surname=stewart Row 4: name=roger category=tennis surname=federer