#!/usr/bin/perl require 5.006; use strict; use warnings; my %dataset; my @fields = ( 'Customer Name', 'Telephone Number', 'Agency Reference', 'Status Description', ); { local $/ = \100; while( ) { my @record; push @record, unpack('a6a10a10a10a64', $_); @{ $dataset{$record[0]} }{ @fields } = @record[1..$#record]; } } use Data::Dumper; print Dumper \%dataset; # print just the Telephone Numbers, sorted by record (job number) print $dataset{$_}{'Telephone Number'},$/ for sort keys %dataset; __DATA__ 1JJJJJ1NNNNNNNNN1TTTTTTTTT1RRRRRRRRR1SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS2JJJJJ2NNNNNNNNN2TTTTTTTTT2RRRRRRRRR2SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS3JJJJJ3NNNNNNNNN3TTTTTTTTT3RRRRRRRRR3SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS