#!/usr/bin/perl use strict; use warnings; $|++; my $buffer; while( my $record = ) { my @items = split /\t/, $record, 5; '' ne $items[0] ? $buffer = $items[0] : $items[0] = $buffer; print join "\t", @items; } =pod prints: 1234 5 20021201 1 0 5678 0 20021202 0 0 5678 0 0 0 10 9120 10 20021211 0 0 6543 5 20021202 0 0 6543 0 0 0 5 6543 0 0 0 5 =cut __DATA__ 1234 5 20021201 1 0 5678 0 20021202 0 0 0 0 0 10 9120 10 20021211 0 0 6543 5 20021202 0 0 0 0 0 5 0 0 0 5 #### .