#!/usr/bin/env perl -w use v5.020; my @F1; my @recs; while (my $line = ) { chomp $line; my @F = split '&', $line; if ($. == 1) { @F1 = @F; } die "NF mismatch" if +@F1 != +@F; push @recs, \@F; for (my $i = 0; $i < @F; $i++) { next unless defined $F1[$i]; if ($F1[$i] ne $F[$i]) { $F1[$i] = undef; } } } for my $rec (@recs) { my $i = 0; for my $field (@$rec) { unless (defined $F1[$i++]) { print "$field\t"; } } say ""; } __DATA__ a=1&b=1&c=1&d=2&e=&f=3 a=1&b=2&c=3&d=2&e=&f=4 a=1&b=2&c=5&d=1&e=&f=5