Okay, so my central confusion here has to do with not
understanding that the caret gets used *only once* in
a construct like this:
my $cb = {
do if ($^a eq $^b) {
"$a";
} else {
"$a & $b";
}
};
say $cb( 'a', 'b' );
After $^a is used, then $a is declared, and you use that form.
So, if you think of $^a as just a funny variable name, you'll get
tripped up in the ways I was, because if you use it again in
the sub-blocks of the if/else, it thinks you're trying to tell
it something about the calling signature for the sub-blocks.
You can however use the "$^a" form repeatedly if you're *not*
using any sub-blocks though, as in the ternary form I was playing
with.
I don't think this usage is very well described anywhere, though
you can argue you should just Get It if you understand that the
caret is a twigil.
And I still think the messaging here is more than a little LTA.