# printf - perldoc - phpman

> **TLDR:** Format and print text.
>
- Print a text message:
  `printf "{{%s\n}}" "{{Hello world}}"`
- Print an integer in bold blue:
  `printf "{{\e[1;34m%.3d\e[0m\n}}" {{42}}`
- Print a float number with the Unicode Euro sign:
  `printf "{{\u20AC %.2f\n}}" {{123.4}}`
- Print a text message composed with environment variables:
  `printf "{{var1: %s\tvar2: %s\n}}" "{{$VAR1}}" "{{$VAR2}}"`
- Store a formatted message in a variable (does not work on Zsh):
  `printf -v {{myvar}} {{"This is %s = %d\n" "a year" 2016}}`
- Print a hexadecimal, octal, and scientific number:
  `printf "{{hex=%x octal=%o scientific=%e\n}}" 0x{{FF}} 0{{377}} {{100000}}`

*Source: tldr-pages*

---

    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](https://www.chedong.com/phpMan.php/perldoc/POSIX%3A%3Asetlocale/markdown)" 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.

