Подтвердить что ты не робот

Разница между printf, print и sprintf в Perl?

Каково конкретное использование print, printf и sprintf в Perl?

Все три ключевых слова используются для печати, но может ли кто-то разделить его кратко?

4b9b3361

Ответ 1

Short:

См. руководства:

Long

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.

Ответ 2

Другие рассмотрели основные моменты, но еще один важный факт: вы можете передать список print, как и die. Иногда это может быть удобно и, по-видимому, более эффективно, чем конкатенация, если вы начинаете с списка.

например.

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

Ответ 3

print только выходы.

printf принимает строку форматирования, например "% 3f", и использует ее для форматирования вывода.

sprintf - это то же самое, что и printf, за исключением того, что он ничего не выводит. Он возвращает форматированную строку.