#! /usr/bin/perl use warnings; use strict; my $grouping = q(); while () { my @columns = split; print "@columns $grouping\n"; if (@columns > 2) { $grouping = $columns[1] if q() eq $grouping; } else { $grouping = q(); } } __DATA__ REC1 DATAX DATA2 1 REC2 DATA3 DATA4 2 REC3 DATA5 DATA6 3 REC4 DATA7 DATA8 4 RECZ 5 REC1 DATAY DATA2 6 REC2 DATA3 DATA4 7 REC3 DATA5 DATA6 8 REC4 DATA7 DATA8 9 RECZ