I may be wrong but I'm guessing from the backslashes in your heredoc that you want $data to contain a single-line string. I don't think what you have written will achieve that. Single quotes result in literal backslashes along with the newlines in the string and double quotes don't seem to escape the meaning of the newline. Doing a global substitution is one way of getting a single line. Consider the following code
use strict;
use warnings;
my $rcSep = sub { return q{*} x 20 . qq{\n} };
print $rcSep->();
my $singleQuoted = <<'EOD';
Line 1\
Line 2\
Line 3
EOD
print $singleQuoted, $rcSep->();
my $doubleQuoted = <<"EOD";
Line 1\
Line 2\
Line 3
EOD
print $doubleQuoted, $rcSep->();
( my $transformed = <<'EOD' ) =~ s{\n+(?!\z)}{ }g;
Line 1
Line 2
Line 3
EOD
print $transformed, $rcSep->();
and its output
********************
Line 1\
Line 2\
Line 3
********************
Line 1
Line 2
Line 3
********************
Line 1 Line 2 Line 3
********************
I hope this is of interest. Cheers, JohnGG |