#! perl -sw use 5.010; use strict; my( $lastID, $lastF1, $lastF2 ) = 0; while( ) { chomp; my( $id, $f1, $f2 ) = unpack 'a5 a10 a10', $_; if( $id && $id == $lastID ) { if( substr( $f1, 0, 1 ) eq ' ' ) { ## second field extension $lastF2 .= substr( $f1, 1 ); } else { $lastF1 .= $f1; } } else { say pack 'A5 A20 A20', $lastID, $lastF1, $lastF2 if $lastID; ( $lastID, $lastF1, $lastF2 ) = ( $id, $f1, $f2 ); } } __DATA__ 12345aaaaaaaaaabbbbbbbbbb 12365sssssssssscccccccccc 12365sssss 12367ddddddddddvvvvvvvvvv 12367 vvvvv