Free Internet Technology info! logo

internet.com
Join the free
WDVL newsletter!

home

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


Up to => Home / Authoring / Scripting / Tutorial

Instantly look up a "techie" word using Webopedia!!


internet.com
e-commerce
WebDeveloper Network



Copyright 1999 internet.com Corporation. Legal Notices. Privacy Policy.

www.internet.com