Paul Lalli wrote:
On Jun 12, 12:15 am, [EMAIL PROTECTED] (Beast) wrote:

Why this following code has not working as expected?

    print "Number of element(s) : " . sprintf("%10d", keys(%hash) ) . "\n";

The keys() function does two different things, depending on context.

In scalar context, it returns the number of key/value pairs in the
hash.

In list context, it returns a list of the keys.

You probably knew that, but didn't realize that you're using it in a
list context here.   The arguments to a function are a list,

$ perl -le'print prototype "CORE::sprintf"'
$@

The *second* argument to this *particular* function is a list.


and so
Perl is expecting a list of values to be passed to sprintf().

A scalar and a list.  The first argument is interpreted in scalar context:

$ perl -le'@x = "a" .. "z"; print sprintf @x'
26
$ perl -le'print sprintf "a" .. "z"'
1E0




John
--
Perl isn't a toolbox, but a small machine shop where you
can special-order certain sorts of tools at low cost and
in short order.                            -- Larry Wall

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to