sub context_in_position { my ($position_name) = @_; my $wa = wantarray; my $context; if ( $wa ) { $context = 'list' } elsif ( defined $wa ) { $context = 'scalar' } else { $context = 'void' } print "context in position '$position_name': $context\n"; return; } sub list { return ( context_in_position( 'a' ), context_in_position( 'b' ), ); } print "list() in void:\n"; list(); print "list() in scalar:\n"; scalar list(); print "list() in list:\n"; () = list(); __END__ list() in void: context in position 'a': void context in position 'b': void list() in scalar: context in position 'a': scalar context in position 'b': scalar list() in list: context in position 'a': list context in position 'b': list