in reply to extract part of line

It's not customary here to email solutions out, as then you'd be the only one benefitting of the solution and there would be no possibility of my peers correcting my solution. So I hope you come back and see the answer here.

Whenever you have data in a fixed format, pack and unpack are the two functions you should be thinking about. After a short study of these manpages, you should be able to extract the data of your set. To split your data file up into the several sets, I will use a regular expression that matches 100 characters a piece. I could also unpack 100 bytes and then cut them out via substr. .

So here's my (tested) attempt :

use strict; # Slurp the whole data file in memory binmode DATA; my $data = do { undef $/; <DATA>; }; # 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__ 1JJJJJNNNNNNNNNTTTTTTTTTTRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSS2JJJJJNNNNNNNNNTTTTTTTTTTRRRRRRRRRRSSSS +SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS3JJJJJNN +NNNNNNNTTTTTTTTTTRRRRRRRRRRSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS +SSSSSSSSSSSSSSSSSSSSSSS
perl -MHTTP::Daemon -MHTTP::Response -MLWP::Simple -e ' ; # The $d = new HTTP::Daemon and fork and getprint $d->url and exit;#spider ($c = $d->accept())->get_request(); $c->send_response( new #in the HTTP::Response(200,$_,$_,qq(Just another Perl hacker\n))); ' # web