I can not reproduce your results, in part because your results are strange.
It would help if you posted a complete example that demonstrates your problem, and enclose that in <code> tags. Here's what I used to test:
use 5.010;
use strict;
use warnings;
use Carp;
my $var = 'QeTEv2804';
printf "%s.\n", $var;
open my $debug, '>>', 'debug.txt' or confess "Couldn't open file: $!";
printf $debug "%s.\n", $var;
close $debug;
debug.txt:
$> hexdump -C debug.txt
00000000 51 65 54 45 76 32 38 30 34 2e 0a |QeTEv2804
+..|
0000000b
In your output, those control characters are NULs, not line endings, and they somehow come before the `.' in your output, suggesting they are part of $var itself. If I append NULs: $var = "QeTEv2804\0\0\0"; and re-run the above script, the output still looks like this, because those \0s are unprintable:
QeTEv2804.
Are you sure this is your actual code? Something seems fishy.
Edit: Took out irrelevant info from above paragraph and added example that reproduces the OP's result.
Another thing I'd suggest is to always use the 3-argument open with lexical file handle, as I did in my example. It won't affect your results in this case, but it's a best practice. |