2016-04-27 137 views
12

Perl中的printprintfsprintf的具体用法是什么?在Perl中printf,print和sprintf的区别?

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

+4

'printf = print sprintf';) –

+0

@ el.pescado。 不完全。 'perl -e'@t =(“%s \ n”,“foo”); print sprintf @t; printf @ t' mob

+0

这个问题是如何得到11分的,虽然很清楚地表明,绝对没有研究甚至没有阅读努力投资? –

回答

14

简称:

参见手册:

长:

print是默认输出函数。它不会做任何排版,但可以追加一个换行符如果Perl是调用-l

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

也许你还应该加上'say'。 – simbabque

2

print只是输出。

printf需要格式化字符串,如“%3f”,并使用它来格式化输出。

sprintf与printf相同,只是它实际上不输出任何内容。它返回一个格式化的字符串。

3

其他人讲述了要点,但另一个重要的小事实是,您可以将列表传递给print,就像die一样。它有时可能会很方便,如果你以一个列表开始,显然它比串联更有效率。

例如

sub log_with_timestamp { 
    my $timestamp = get_timestamp(); 
    print $timestamp, ' ', @_, "\n"; 
} 
相关问题