'"', '\', 'x', '2', '9', '"' - это код Perl для строкового литерала, который создает односимвольную строку.
'\', 'x', '2', '9' - это другая последовательность, и она никогда не передается парсеру Perl, а тем более выполняется.Кроме того, sprintf
не относится к "\" специально.Все экранирования, которые он знает, начинаются с "%".
Вот почему вы не получаете тот же вывод.