This the part
unpack was born to play. It'll let you
defile define field lengths, which you can stuff into an array.
I'm taking a guess as to what the field names might be, and what the field lengths would be; it'd have been more useful to know those than to actually see the text ;)
if you wanted just the first 5 fields, and rework the first, third and second :
($part_code, $part_size, $part_size2, $quantity, $cryptic_field) = unp
+ack ("A54 A7 A7 A10 A5", $line_from_file);
print OUT join ("|", ($partcode, $part_size2, $part_size));
make sense?