my @result = split /($query)/, $source; #### my ($extra, $tag_it) = (0, 0); my $output = ""; for(@result) { my @line = split /\n/, $_, -1; unshift @line, unpack "A$extra A*", shift @line; @line = map split /(.{80})/, @lines; $extra = 80 - length @line[-1]; $output .= $tag_it ? "$_" : $_ for join "
\n", @line; $tag_it = not $tag_it; }