#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; my @values; while (<>) { if (my ($size) = /^pat([0-9])/) { $size == 1 + @values or die "Unexpected $_"; next } my ($register, $value) = /(\S+).*\}([0-9])/; say join "\t", $register, splice @values if 5 == push @values, $value; }