perl function wantarray
In Perl, the wantarray
function is used to determine whether a function or subroutine is called in a list context or a scalar context. The function returns a boolean value indicating the calling context.
Here is an example:
sub get_array_or_scalar { if(wantarray) { return (1, 2, 3); # return an array } else { return "scalar"; # return a scalar } } my $scalar_value = get_array_or_scalar(); print "Scalar context: $scalar_value\n"; # prints "Scalar context: scalar" my @array_value = get_array_or_scalar(); print "Array context: @array_value\n"; # prints "Array context: 1 2 3"
In this example, we define a subroutine get_array_or_scalar
which checks whether it is called in an array context or a scalar context using the wantarray
function. If the function is called in a list context, it returns an array (1, 2, 3)
; otherwise, it returns a string "scalar".
We then call the get_array_or_scalar
subroutine in both array context and scalar context and print out the results. In scalar context, we store the return value of the function in a scalar variable $scalar_value
and print it out. In array context, we store the return value of the function in an array variable @array_value
and print it out.