What is the specific usage of print
, printf
, and sprintf
in Perl?
All three keywords are used for printing purposes, but can someone differentiate it briefly?
Short:
See the manuals:
Long:
print
is the default output function. It does no formatting but may append a line break if Perl is called with -l
:
print $foo;
print "Hello $world";
print $filehandle $something;
sprintf
is a formatter and doesn't do any printing at all:
$result = sprintf('The %s is %d', 'answer', 42);
printf
is the same as sprintf
, but actually prints the result:
printf 'This is question %d on %s', 36882022, 'StackOverflow';
See the sprintf
documentation for more details on valid placeholders/format strings.
Since 5.10, Perl also supports say
which is basically a print
plus an additional \n
.
print
just outputs.
printf
takes a formatting string like "%3f" and uses it to format the output.
sprintf
is the same as printf except it doesn't actually output anything. It returns a formatted string.
The others covered the main points, but one other important little fact is that you can pass a list to print
, just like die
. It can be convenient sometimes and is apparently more efficient than concatenation if you are starting with a list.
e.g.
sub log_with_timestamp {
my $timestamp = get_timestamp();
print $timestamp, ' ', @_, "\n";
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With