printf FILEHANDLE FORMAT, LIST
printf FILEHANDLE
printf FORMAT, LIST
printf

等同於 print FILEHANDLE sprintf(FORMAT, LIST),但不會附加 $\(輸出記錄分隔符號)。FORMAT 和 LIST 實際上會解析為單一清單。清單的第一個引數會詮釋為 printf 格式。這表示 printf(@_) 會使用 $_[0] 作為格式。請參閱 sprintf 以了解格式引數的說明。如果 use locale(包含 use locale ':not_characters')生效,且已呼叫 POSIX::setlocale,則格式化浮點數中用於小數分隔符號的字元會受到 LC_NUMERIC 區域設定影響。請參閱 perllocalePOSIX

基於歷史原因,如果您省略清單,則會使用 $_ 作為格式;若要在沒有清單的情況下使用 FILEHANDLE,您必須使用裸字檔案句柄,例如 FH,而不是間接檔案句柄,例如 $fh。然而,這很少會達到您的目的;如果 $_ 包含格式化程式碼,則會以空白字串取代這些程式碼,且如果啟用 警告,則會發出警告。如果您想要列印 $_ 的內容,請使用 print

不要落入使用 printf 的陷阱,而簡單的 print 就能完成工作。print 效率更高,且較不容易出錯。