sprintfFORMAT
,LIST
This function returns a string formatted by the usual printf
conventions. The FORMAT
string contains text with embedded field
specifiers into which the elements of LIST
are substituted, one per
field. Field specifiers are roughly of the form:
%m.nx
where the m
and n
are
optional sizes whose interpretation depends on the type of field, and
x
is one of:
Code | Meaning |
---|---|
c | Character |
d | Decimal integer |
e | Exponential format floating-point number |
f | Fixed point format floating-point number |
g | Compact format floating-point number |
ld | Long decimal integer |
lo | Long octal integer |
lu | Long unsigned decimal integer |
lx | Long hexadecimal integer |
o | Octal integer |
s | String |
u | Unsigned decimal integer |
x | Hexadecimal integer |
X | Hexadecimal integer with upper-case letters |
The various combinations are fully documented in the manpage for
printf(3), but we'll mention that
m
is typically the minimum length of the field
(negative for left justified), and n
is precision for
exponential formats and the maximum length for other formats. Padding is
typically done with spaces for strings and zeroes for numbers. The
*
character as a length specifier is not supported. But,
you can easily get around this by including the length expression directly into
FORMAT
, as in:
$width = 20; $value = sin 1.0; foreach $precision (0..($width-2)) { $output_arr[$precision] = sprintf "%${width}.${precision}f", $value; }