in reply to extract part of line

i suggest you use a hash of records instead of multiple arrays. my solution is below. you'll have to modify it to use a file instead of the DATA handle.

#!/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( <DATA> ) { 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__ 1JJJJJ1NNNNNNNNN1TTTTTTTTT1RRRRRRRRR1SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS2JJJJJ2NNNNNNNNN2TTTTTTTTT2RRRRRRRRR2S +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS3JJJJJ +3NNNNNNNNN3TTTTTTTTT3RRRRRRRRR3SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS +SSSSSSSSSSSSSSSSSSSSSSSSSS
which produces:

> perl t-fixedwidth.pl $VAR1 = { '1JJJJJ' => { 'Status Description' => '1SSSSSSSSSSSSSSSSSSSS +SSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '1RRRRRRRRR', 'Customer Name' => '1NNNNNNNNN', 'Telephone Number' => '1TTTTTTTTT' }, '3JJJJJ' => { 'Status Description' => '3SSSSSSSSSSSSSSSSSSSS +SSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '3RRRRRRRRR', 'Customer Name' => '3NNNNNNNNN', 'Telephone Number' => '3TTTTTTTTT' }, '2JJJJJ' => { 'Status Description' => '2SSSSSSSSSSSSSSSSSSSS +SSSSSSSSSS SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS', 'Agency Reference' => '2RRRRRRRRR', 'Customer Name' => '2NNNNNNNNN', 'Telephone Number' => '2TTTTTTTTT' } }; 1TTTTTTTTT 2TTTTTTTTT 3TTTTTTTTT >

~Particle *accelerates*

Replies are listed 'Best First'.
Re: Re: extract part of line
by jdawes (Novice) on Jul 15, 2002 at 06:46 UTC
    Thank you all,
    I really appreciate this,
    I'm working on integrating this in the code now
    Perl monks rox.