Perl中printf,print和sprintf的区别?

时间:2016-04-27 06:31:38

标签: perl

Perl中printprintfsprintf的具体用法是什么?

所有三个关键字都用于打印目的,但有人可以简单区分它吗?

3 个答案:

答案 0 :(得分:15)

<强>短

参见手册:

<强>长:

print是默认输出函数。它不进行格式化,但如果使用-l调用Perl,则可能会附加换行符:

print $foo;
print "Hello $world";
print $filehandle $something;

sprintf是格式化工具,根本不进行任何打印:

$result = sprintf('The %s is %d', 'answer', 42);

printfsprintf相同,但实际上会打印结果:

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相同,但它实际上并没有输出任何内容。它返回一个格式化的字符串。