perl-5.20.1
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.

$\(出力レコードセパレータ)を追加しないことを除けば、 print FILEHANDLE sprintf(FORMAT, LIST) と等価です。 FORMAT と LIST は実際には単一のリストとしてパースされます。 リストの最初の要素は、printf フォーマットと解釈されます。 これは、printf(@_) はフォーマットとして $_[0] を使うということです。 フォーマット引数の説明については sprintf を 参照してください。 (use locale ':not_characters' を含む) use locale が効力をもっていて、 POSIX::setlocale() が呼び出されていれば、 小数点に使われる文字は LC_NUMERIC ロケール設定の影響を受けます。 perllocalePOSIX を参照してください。

For historical reasons, if you omit the list, $_ is used as the format; to use FILEHANDLE without a list, you must use a real 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 $_.

歴史的な理由により、リストを省略すると、フォーマットとして $_ が使われます; リストなしで FILEHANDLE を使用するには、$fh のような 間接ファイルハンドルではなく、FH のような実際の ファイルハンドルを使わなければなりません。 しかし、これがあなたが求めていることをすることはまれです; $_ が フォーマッティングコードの場合、空文字列に置き換えられ、警告が有効なら 警告が出力されます。 $_ の内容を表示したい場合は、単に print を使ってください。

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.

単純な print を使うべきところで printf を使ってしまう 罠にかからないようにしてください。 print はより効率的で、間違いが起こりにくいです。