in reply to Re^2: wantarray documentation in 5.8.7
in thread wantarray documentation in 5.8.7

wantarray, I thought, and your test would confirms it, depends on context, not scope.

But then, your do as block, with the code directly inside, like this:

my @arr2=do {wantarray ? print("wantarray!\n") : defined wantarray ? print("wantarray defined but false\n") : print("wantarray undefined!\n"); wantarray ? qw( ciao a tutti ) : defined wantarray && "howdy!"; };


Is always undefined, both in scalar, void or array context, and the same apply to wantarray called directly, like this:

my $sc2=wantarray ? print("wantarray!\n") && qw(ciao a tutti) : defined wantarray ? print("wantarray defined but false\n") && "howdy!" : print("wantarray undefined!\n");


The way I got it working as expected were in a sub, like this:

sub wanttest { wantarray ? print("wantarray!\n") : defined wantarray ? print("wantarray defined but false\n") : print("wantarray undefined!\n"); return wantarray ? qw( ciao a tutti ) : defined wantarray && "howdy!"; } wanttest(); my $sc=wanttest(); print "Returned $sc\n\n"; my @arr=wanttest(); print "Returned @arr \n\n";


Is wantarray only trustable inside subs or even there it fails to return as expected anytime?

I was expecting thet the context made the trick, but after see it fail when called directly, I wasn't expecting that the do block didn't work as the do EXPR (do 'filename.pl').