1

我在文件 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 是输入和输出文件句柄。

4

2 回答 2

6

因为这就是这样printf做的。你想要print

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

如果你想继续使用printf,你需要使用

while ($line = <$in_fh>) {
    printf $out_fh "%s", $line;
}
于 2012-10-09T18:08:26.223 回答
3

因为printf解释$line为格式字符串,并发现%x它看起来像一个标记。改为使用print

于 2012-10-09T18:08:44.363 回答