my $temp; my $header = ; while( ){ my ($id, $data) = /(\S+)(.+)/; open my $fh, '>>', $id or die "cannot open file $id: $!"; print $fh $header if $temp ne $id; print $fh $id, $data, $/; $temp = $id; } __DATA__ Usr1369***12556 06-01-0101:00 1169 06-01-0101:00 2396 06-01-0103:12 1169 06-01-0103:12 2569 06-01-0301:00 1169 06-01-0301:00 2396