sub foo { my $wa = wantarray; if ( $wa ) { print "array\n" } elsif ( defined $wa ) { print "scalar\n" } else { print "void\n" } } my @x = ( 1, 2 ); print "for(\@x){foo()}:\n"; for ( @x ) { foo( $_ ) } # void print "map{foo()} \@x:\n"; map { foo( $_ ) } @x; # array __END__ for(@x){foo()}: void void map{foo()} @x: array array