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, за исключением того, что он ничего не выводит. Он возвращает форматированную строку.