my $data = "0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,".('c'x50).",16,17,18,19,20,21,22,23,24,25,26,27"; while ($data =~/[^\n]{16}/) { $data =~s/([^\n]{16})/ch($1)/e; } print $data; sub ch { my $s = shift; my $p = rindex($s, ',', 14)+1; $p=15 unless($p); return substr($s, 0, $p)."\n".substr($s, $p) }; #### $data =~s/([^\n]{16})/ch($1)/ge; #### $data =~s/([^\n]{16})/pos($data)=0;ch($1)/ge;