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

时间:2012-10-09 18:06:43

标签: perl printf

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

printf ("integer value is %x \n", a);

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

printf ("integer value is 0 \n", a);

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

这就是我的Perl代码的外观:

while ($line = <$in_fh>) {
    printf $out_fh $line;
}

这里,$ in_fh和$ out_fh在&amp; out文件句柄。

2 个答案:

答案 0 :(得分:6)

因为那是printf所做的。你想要print

while ($line = <$in_fh>) {
    print $out_fh $line;
}

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

while ($line = <$in_fh>) {
    printf $out_fh "%s", $line;
}

答案 1 :(得分:3)

因为printf$line解释为格式字符串,并找到看起来像令牌的%x。请改用print