【问题标题】:Difference between printf, print, and sprintf in PerlPerl 中 printf、print 和 sprintf 的区别
【发布时间】:2021-05-17 05:03:29
【问题描述】:

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

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

【问题讨论】:

  • printf = print sprintf ;)
  • @el.pescado。 不完全是。 perl -e '@t=("%s\n","foo");print sprintf @t;printf @t
  • 这道题是怎么得了 11 分的,而很明显没有任何研究甚至阅读努力投资?

标签: perl


【解决方案1】:

短:

查看手册:

长:

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

【讨论】:

  • 也许你也应该添加say
【解决方案2】:

print 只是输出。

printf 采用像 "%3f" 这样的格式化字符串并使用它来格式化输出。

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

【讨论】:

    【解决方案3】:

    其他内容涵盖了要点,但另一个重要的小事实是您可以将列表传递给print,就像die一样。如果从列表开始,它有时会很方便,而且显然比串联更有效。

    例如

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

    【讨论】:

      猜你喜欢
      • 2011-06-05
      • 2017-04-18
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2013-10-17
      • 2014-07-27
      相关资源
      最近更新 更多