sub bar { local $\; print "bar:"; print wantarray ? "list - " : "scalar - "; return ( "d", "e" ); } sub foo { local $\; print "foo:"; print wantarray ? "list - " : "scalar - "; return ( "c", bar ); } $\ = "\n"; print ( 'a', 'b', foo ); # adcde print scalar ( 'a', 'b', foo ); # e print +() = ( 'a', 'b', foo ); # nothing print scalar ( () = ( 'a', 'b', foo ) ); # 5 __END__ foo:list - bar:list - abcde foo:scalar - bar:scalar - e foo:list - bar:list - foo:list - bar:list - 5