The problem is that those characters aren't literally back-slashed! What happens is that the backslash escapes the letter after it to become an escape character, so you're actually after these special escape characters. Something like this might be what you're after -
%ctrl_chars = ("\n" => '\n', "\t" => '\t', "\r" => '\r');
$line =~ s/$_/$ctrl_chars{$_}/ for (keys %ctrl_chars);
Of course you may want to replace other escape characters, in which case you'll probably want to check you the
ascii table (see.
man ascii(7).
HTH
broquaint