Perl uses the
print
and
printf
functions to write to standard output. Let's look at how they are used.
We've already used
print
to display text on standard output. Let's expand on that a bit.
The
print
function takes a list of strings and sends each string to standard output in turn, without any intervening or trailing characters added. What might not be obvious is that
print
is really just a function that takes a list of arguments, and returns a value like any other function. In other words,
$a = print("hello ", "world", "\n");
would be another way to say
hello world
. The
return value of
print
is a true or false value, indicating the success of the
print
. It nearly always succeeds, unless you get some I/O error, so
$a
in this case would usually be 1.
Sometimes you'll need to add
parentheses to
print
as shown in the example, especially when the first thing you want to print itself starts with a left parenthesis, as in:
print (2+3),"hello"; # wrong! prints 5, ignores "hello" print ((2+3),"hello"); # right, prints 5hello print 2+3,"hello"; # also right, prints 5hello
You may wish a little more control over your output than
print
provides. In fact, you may be accustomed to the
formatted output of C's
printf
function. Fear not: Perl provides a comparable operation with the same name.
The
printf
function takes a list of arguments (enclosed in optional parentheses, like the
print
function). The first argument is a format control string, defining how to print the remaining arguments. If you're not familiar with the standard
printf
function, you should probably check out the manpage for
printf
(3) or
perlfunc
(1), if you have one, or look at the description in
Chapter 3
of
Programming Perl
.
As an example, however
printf "%15s %5d %10.2f\n", $s, $n, $r;
prints
$s
in a 15-character field, then space, then
$n
as a decimal integer in a 5-character field, then another space, then
$r
as a floating-point value with 2 decimal places in a 10-character field, and finally a newline.