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";