At this point we might as well just ask for proper variable interpolation, because that's what this (almost) is. The only problem with your suggestion is that it's incomplete, because it only solves interpolation for a very stringent set of rules and for a variable name convention that just isn't used. What if people wanted to just do %var.%i.%chan?

Proper interpolation would get these and other benefits, ie.

//echo -a how many {$me}'s are there in the room?

And of course you could apply that same interpolation to the array syntax:

/set %array.{%i}.{#}.{$cid} 1
- or -
/set %array[{%i}][{#}][{$cid}] 1

This gives people the freedom to use any variable naming they want, and not only use this concept for "arrays". Interpolation would naturally solve evaluation as well, because it's implicit in the concept:

//echo -a %array[{%i}][{#}][$cid]

But of course this isn't *entirely* backwards compatible just like your suggestion isn't *entirely* backwards compatible, if you consider the edge cases:

/set %array[%i] <- currently sets "%array[%i]", so any scripts currently relying on such a variable name syntax would break. I'm sure it's rare, but it's probably just as rare as:

//echo -a How many {$me}'s are in the room?

And to clarify, the syntax for interpolation would be {...} where "..." must start with either $ or % (or # alone as a special case).

- argv[0] on EFnet #mIRC
- "Life is a pointer to an integer without a cast"