sub test_wantarray{ wantarray ? Y : N; } print "Hello" . &test_wa . "World\n"; print "Hello", &test_wa, "World\n"; output: HelloNWorld HelloYWorld #### sub print_context { if (not defined wantarray) { print "[void context]"; } elsif (wantarray) { print "[list context]"; } else { print "[scalar context]"; } return undef; } "Hello", print_context, "World\n"; # void context print "\n"; "Hello " . print_context . "World\n"; # scalar context print "\n"; print "Hello " . print_context . "World\n"; # scalar context print "\n"; print "Hello", print_context, "World\n"; # list context print "\n"; join print_context, # scalar context print_context, print_context; # both list context print "\n"; #### print_context() ? print_context() : print_context(); print "\n"; #### sub test_wantarray{ wantarray ? @array: \@array; } #### print_context() ? print_context() : print_context(); print "\n"; print print_context() ? print_context() : print_context(); print "\n"; print join(print_context() ? print_context() : print_context()), print_context(), "\n"; #### $;=sub{$/};@;=map{my($a,$b)=($_,$;);$;=sub{$a.$b->()}} split//,".rekcah lreP rehtona tsuJ";$\=$ ;->();print$/