1:2:3:4 5:6:7:8 :9:10:11 12:13:14:15 :17:18:19 #### a:b:c:d:e f:g:h:i:j k:l:m:n:o p:q:r:s:t u:v:w:x:y #### use File::Copy; use strict; my (@col, $val, $i); open(COL, ") { push @col, $_ =~ m/(.*?):/; } close(COL); open(OUT, ">out.txt"); open(COL, ") { ($val) = $_ =~ m/(.*?):/; $_ =~ s/(.*?)(?=:)/$col[$i++]/ unless $val =~ m/^\s*$/; print OUT $_; } close(COL); close(OUT); copy("out.txt", "original.txt"); #### a:2:3:4 f:6:7:8 :9:10:11 k:13:14:15 :17:18:19