#!/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 #### > perl t-fixedwidth.pl $VAR1 = { '1JJJJJ' => { 'Status Description' => '1SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '1RRRRRRRRR', 'Customer Name' => '1NNNNNNNNN', 'Telephone Number' => '1TTTTTTTTT' }, '3JJJJJ' => { 'Status Description' => '3SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '3RRRRRRRRR', 'Customer Name' => '3NNNNNNNNN', 'Telephone Number' => '3TTTTTTTTT' }, '2JJJJJ' => { 'Status Description' => '2SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '2RRRRRRRRR', 'Customer Name' => '2NNNNNNNNN', 'Telephone Number' => '2TTTTTTTTT' } }; 1TTTTTTTTT 2TTTTTTTTT 3TTTTTTTTT > #### .