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$/