Perl 如何打印';%';带有'的字符;printf';?

Perl 如何打印';%';带有'的字符;printf';?,perl,printf,Perl,Printf,简单的问题,我无法解决 如何在printf字符串中打印“%”字符?下面的代码打印它,但也会出现“无效转换”错误 printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f\%\n", $total, $max15, ($max15/$total*100); 应该输出如下内容: 0000 HRS => 3125.19 898.02 28.7% 您将使用%%,而不是\%(来自man)而不是\%use%%:

简单的问题,我无法解决

如何在
printf
字符串中打印“%”字符?下面的代码打印它,但也会出现“无效转换”错误

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f\%\n", $total, $max15, ($max15/$total*100);
应该输出如下内容:

        0000 HRS    =>    3125.19    898.02    28.7%

您将使用%%,而不是\%(来自man)

而不是\%use%%:)

使用%%打印单个%

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%%\n", $total, $max15, ($max15/$total*100);

%%事后看来,对于一个单一的%

来说,有一个粗糙的替代方案也可以做同样的事情

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%%\n", $total, $max15, ($max15/$total*100);
将“%”符号打印为字符串:

printf "\t\t".$hour."00 HRS\t=>\t%.2f\t%.2f\t%.1f%s\n", $total, $max15, ($max15/$total*100), "%";

这有点棘手,因为的模板文档实际上位于的文档中。你必须抓住段落中间的那条线才能知道它在哪里。

“man Primf”真的告诉你系统上的Perl函数吗?在我的电脑上,它只讲述命令行程序。我可以用“man3printf”得到C函数;如果我想了解Perl函数,我会使用“perldoc-f printf”,至少看起来我们都同意这个答案。@Rob Kennedy:“perldoc-f printf”没有给我任何细节,而是指sprintf。“perldoc-fsprintf”确实提供了我所需要的所有细节,就像“manprintf”。“Man3Printf”OTOH为我提供了OCaml库的手册页。这是在最近的kUbuntu上(显然安装了OCaml!)