Perl中print
,printf
和sprintf
的具体用法是什么?
所有三个关键字都用于打印目的,但有人可以简单区分它吗?
答案 0 :(得分:15)
<强>短强>
参见手册:
<强>长:强>
print
是默认输出函数。它不进行格式化,但如果使用-l
调用Perl,则可能会附加换行符:
print $foo;
print "Hello $world";
print $filehandle $something;
sprintf
是格式化工具,根本不进行任何打印:
$result = sprintf('The %s is %d', 'answer', 42);
printf
与sprintf
相同,但实际上会打印结果:
printf 'This is question %d on %s', 36882022, 'StackOverflow';
有关有效占位符/格式字符串的详细信息,请参阅sprintf
documentation。
自5.10起,Perl还支持say
,基本上是print
加上\n
。
答案 1 :(得分:3)
其他人涵盖了要点,但另一个重要的事实是,您可以将列表传递给print
,就像die
一样。它有时很方便,如果你从列表开始,它显然比连接更有效。
e.g。
sub log_with_timestamp {
my $timestamp = get_timestamp();
print $timestamp, ' ', @_, "\n";
}
答案 2 :(得分:2)
print
只是输出。
printf
采用格式化字符串,例如&#34;%3f&#34;并使用它来格式化输出。
sprintf
与printf相同,但它实际上并没有输出任何内容。它返回一个格式化的字符串。