use strict; # Slurp the whole data file in memory binmode DATA; my $data = do { undef $/; ; }; # And now split it into records : my @rows; while ($data =~ /\G(.{100})/gsm) { push @rows, $1; }; foreach my $row (@rows) { my @contents = unpack( 'a6a10a10a10a63', $row ); print join ":", @contents,"\n"; }; __DATA__ 1JJJJJNNNNNNNNNTTTTTTTTTTRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS2JJJJJNNNNNNNNNTTTTTTTTTTRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS3JJJJJNNNNNNNNNTTTTTTTTTTRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS