=over

=item printf FILEHANDLE FORMAT, LIST
X<printf>

=item printf FILEHANDLE

=item printf FORMAT, LIST

=item printf

Equivalent to C<print FILEHANDLE sprintf(FORMAT, LIST)>, except that
L<C<$\>|perlvar/$\> (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
L<C<printf>|/printf FILEHANDLE FORMAT, LIST> format.  This means that
C<printf(@_)> will use C<$_[0]> as the format.  See
L<sprintf|/sprintf FORMAT, LIST> for an explanation of the format
argument.  If C<use locale> (including C<use locale ':not_characters'>)
is in effect and L<C<POSIX::setlocale>|POSIX/C<setlocale>> has been
called, the character used for the decimal separator in formatted
floating-point numbers is affected by the C<LC_NUMERIC> locale setting.
See L<perllocale> and L<POSIX>.

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

Don't fall into the trap of using a
L<C<printf>|/printf FILEHANDLE FORMAT, LIST> when a simple
L<C<print>|/print FILEHANDLE LIST> would do.  The
L<C<print>|/print FILEHANDLE LIST> is more efficient and less error
prone.

=back