Modifiers:
| 0 | Zero pad numbers (implies right justification) |
| ! | Toggle truncation |
| ' ' (space) | pad positive integers with a space |
| + | pad positive integers with a plus sign |
| - | left adjusted within field size (default is right) |
| | | centered within field size |
| = | column mode if strings are greater than field size |
| / | Rough linebreak (break at exactly fieldsize instead of between words) |
| # | table mode, print a list of '\n' separated word (top-to-bottom order) |
| $ | Inverse table mode (left-to-right order) |
| n | (where n is a number or *) a number specifies field size |
| .n | set precision |
| :n | set field size & precision |
| ;n | Set column width |
| * | if n is a * then next argument is used for precision/field size |
| 'X' | Set a pad string. ' cannot be a part of the pad_string (yet) |
| ~ | Get pad string from argument list. |
| < | Use same arg again |
| ^ | repeat this on every line produced |
| @ | do this format for each entry in argument array |
| > | Put the string at the bottom end of column instead of top |
| _ | Set width to the length of data |
Operators:
| %% | percent |
| %d | signed decimal int |
| %u | unsigned decimal int (doesn't really exist in Pike) |
| %o | unsigned octal int |
| %x | lowercase unsigned hexadecimal int |
| %X | uppercase unsigned hexadecimal int |
| %c | char (or short with %2c, %3c gives 3 bytes etc.) |
| %f | float |
| %g | heruistically chosen representation of float |
| %e | exponential notation float |
| %s | string |
| %O | any type (debug style) |
| %n | nop |
| %t | type of argument |
| %<modifiers>{format%} | do a format for every index in an array. |