Каково конкретное использование print
, printf
и sprintf
в Perl?
Все три ключевых слова используются для печати, но может ли кто-то разделить его кратко?
Каково конкретное использование print
, printf
и sprintf
в Perl?
Все три ключевых слова используются для печати, но может ли кто-то разделить его кратко?
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
.
Другие рассмотрели основные моменты, но еще один важный факт: вы можете передать список print
, как и die
. Иногда это может быть удобно и, по-видимому, более эффективно, чем конкатенация, если вы начинаете с списка.
например.
sub log_with_timestamp {
my $timestamp = get_timestamp();
print $timestamp, ' ', @_, "\n";
}
print
только выходы.
printf
принимает строку форматирования, например "% 3f", и использует ее для форматирования вывода.
sprintf
- это то же самое, что и printf, за исключением того, что он ничего не выводит. Он возвращает форматированную строку.