http://www.perlmonks.org?node_id=1069233


in reply to String wraps after a replace operation

Study this script, then run it.

use strict; use warnings; my $line = <DATA>; my $rt = <DATA>; my $cached_line = $line; $line =~ s/Kept/Resold/g; $line =~ s/,-1,/,$rt,/g; print $line; $line = $cached_line; chomp $rt; $line =~ s/Kept/Resold/g; $line =~ s/,-1,/,$rt,/g; print $line; __DATA__ 2013-06-13 19:00,2013-06-13,2013-06-01,212276,375296,-1,1461599,1434,6 +1073,US,Kept,300x250,1,0,0.25,0.00025 275805

This is what it prints.

2013-06-13 19:00,2013-06-13,2013-06-01,212276,375296,275805
,1461599,1434,61073,US,Resold,300x250,1,0,0.25,0.00025
2013-06-13 19:00,2013-06-13,2013-06-01,212276,375296,275805,1461599,1434,61073,US,Resold,300x250,1,0,0.25,0.00025

Does this help you understand the likely problem? As toolic suggested, the variable $rt probably has more in it than you think it does; namely, a trailing newline. If this is the problem, then the solution is to remove the newline using chomp.

Your problem likely has nothing to do with "wrapping," so forget about using Text::Wrap.

Jim