my $lastToAdd = -1; # Fake up present flag for +/- 8 lines around real data for my $pip (0 .. $#$origin) { next if $pip > $lastToAdd and ! defined $origin->[$pip]; if ($pip <= $lastToAdd and ! defined $origin->[$pip]) { @{$origin->[$pip]}[0 .. $numColumns - 1] = ('', $oKey, $pip + 1, ('') x $numColumns); next; } my $first = $pip > 8 ? $pip - 8 : 0; for my $index ($first .. $pip) { next if defined $origin->[$index]; @{$origin->[$index]}[0 .. $numColumns - 1] = ('', $oKey, $index + 1, ('') x $numColumns); } $lastToAdd = $pip + 8; }