A12 mentions that C<$foo.bar> should return undef if C<$foo> is undef. While I like the idea a lot, I don't think it should happen without distinction. In fact, that's what I would most expect C<.?> to do, not "call a method if there is one," though that seems useful, too.
I'm just shooting in the dark here, but perhaps C<?.> should play that role. That way you have: $foo.?bar # return undef if "bar" is undef... in a manner of speaking $foo?.bar # return undef if $foo is undef $foo?.?bar # return undef if either is (?) Either that or C<.?> could double as both roles, considering C<undef> an object with no methods. And I can't figure out for the life of me why you'd ever want to use C<.+>... Luke