in reply to Reverse the String

One of the more interesting (i.e. both useful and potentially confusing) aspects of perl is that a function can determine whether it's caller wants an array or a scalar, via the 'wantarray' function.

This is called being called "in scalar context" or "in list context".

This allows the same function to do two different useful jobs, but can be surprising to someone who expects the following snippets to do the same thing (which they might not):

# ------------------------------ # Call in array context # wantarray() will return true inside some_function my @ary = some_function; # And see how many items were returned. my $num_items = scalar @ary; # ------------------------------ # Call with explicit scalar context: # wantarray() will return false inside some_function my $num_items = scalar some_function; # $num_items might or might not be the same as the array # context call above, depending on whether some_function # chooses to check want_array and do something different. # ------------------------------ # Call with explicit scalar context: # wantarray() will return false inside some_function my $num_items = some_function; # As above.
There is some more on this in the 'Context' section here: perldata