See the current Perl documentation for printf.
Here is our local, out-dated (pre-5.6) version:
printf - output a formatted list to a filehandle
printf FILEHANDLE FORMAT, LIST
printf FORMAT, LIST
print FILEHANDLE sprintf(FORMAT, LIST), except that
(the output record separator) is not appended. The first argument of the
list will be interpreted as the printf() format. If
use locale is in effect, the character used for the decimal point in formatted real numbers is affected by the
LC_NUMERIC locale. See
the perllocale manpage.
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.