You are viewing the version of this documentation from Perl 5.24.0. View the latest version
printf FILEHANDLE FORMAT, LIST
printf FILEHANDLE
printf FORMAT, LIST
printf

Equivalent to print FILEHANDLE sprintf(FORMAT, LIST), except that $\ (the output record separator) is not appended. The FORMAT and the LIST are actually parsed as a single list. The first argument of the list will be interpreted as the printf format. This means that printf(@_) will use $_[0] as the format. See sprintf for an explanation of the format argument. If use locale (including use locale ':not_characters') is in effect and POSIX::setlocale has been called, the character used for the decimal separator in formatted floating-point numbers is affected by the LC_NUMERIC locale setting. See perllocale and POSIX.

For historical reasons, if you omit the list, $_ is used as the format; to use FILEHANDLE without a list, you must use a bareword filehandle like FH, not an indirect one like $fh. However, this will rarely do what you want; if $_ contains formatting codes, they will be replaced with the empty string and a warning will be emitted if warnings are enabled. Just use print if you want to print the contents of $_.

Don't fall into the trap of using a printf when a simple print would do. The print is more efficient and less error prone.