|
Using the printf and sprintf functions
- The Perl printf is much like the printf
function in C and awk in that it takes a string to be formatted
and a list of format arguments, applies the formatting to the
string, and then typically prints the formatted string to
standard output, which in our case, is the Web browser.
- The printf syntax uses a double quoted
string which includes special format markers followed by a
comma-delimited list of arguments to be applied to those markers.
The format markers are typically in the form of a percent sign
followed by a control character.
- For example, the generic format of
printf might look like the following code:
printf ("[some text] %[format] [other text]",
[argument to be formatted]);
- In usage, we might use the %s formatting
argument specifying a string and the %d formatting argument
specifying a digit using the following syntax:
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
$name = "Selena Sol";
$age = 28;
printf ("My name is %s and my age is %d.\n",
$name, $age);
- The code above would produce the
following output in the Web browser window:
My name is Selena Sol and my age is 28.
- In reality, the printf function is
rarely used in Perl CGI since, unlike C which almost demands the
use of printf, Perl has much easier ways of printing. However,
the printf routines are essential for another, more useful
(to CGI developers) function, sprintf.
- Unlike printf, sprintf takes the
formatted output and assigns it to a variable rather than
outputting it to standard output (<STDOUT>), using the
following generic syntax:
$variable_name = sprintf ("[some text]
%[format] [other text]", [string to be
formatted]);
- A good example of using sprintf might
come from a shopping cart script. In this script, we need to
format subtotals and grand totals to two decimal places so that
prices come out to numbers like "$99.00" or "$98.99" rather than
"99" or "98.99876453782". Below is a snippet of code which uses
sprintf to format a price string to two decimal places.
$option_grand_total = sprintf ("%.2f\n",
$unformatted_option_grand_total);
- In this example, the variable,
$unformatted_option_grand_total is formatted using the "%.2f"
argument which formats (%) the string to two decimal places
(.2f).
- There are a multitude of formatting
arguments besides "%s", "%d" and "%f", however. The following
Table lists several useful ones.
Format character |
Description |
c |
Character |
s |
String |
d |
Decimal Number |
x |
Hexadecimal Number |
o |
Octal Number |
f |
Floating Point Number |
Using qq
Table of Contents
Formatting the Output
| |
|