为什么perl在从文件读取并写入另一个文件时将"%x"打印为数值?

use*_*589 1 perl printf

我在文件1中有这个文字:

printf ("integer value is %x \n", a);
Run Code Online (Sandbox Code Playgroud)

我想从文件1读取数据并写入文件2.当我到达此特定行时,文件2显示​​如下:

printf ("integer value is 0 \n", a);
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我怎么能避免这个?

这是我的Perl代码的外观:

while ($line = <$in_fh>) {
    printf $out_fh $line;
}
Run Code Online (Sandbox Code Playgroud)

这里,$ in_fh和$ out_fh是进出文件句柄.

ike*_*ami 6

因为那是什么printf.你想要的print.

while ($line = <$in_fh>) {
    print $out_fh $line;
}
Run Code Online (Sandbox Code Playgroud)

如果您想继续使用printf,则需要使用

while ($line = <$in_fh>) {
    printf $out_fh "%s", $line;
}
Run Code Online (Sandbox Code Playgroud)