Ah, I didn’t catch the problem the first time around because there’s actually two problems with your syntax, I noticed the first one, and I corrected it without thinking about it deeply enough. My mistake.
First: What I mentioned before, it’s arrayed from 1, not 0, so you should be using @{foo 1 | 2 | 3 } not @{foo 0 | 1 | 2 } (Assuming I’m understanding your intentions correctly.) (Although this shouldn’t have caused a crash, as this means you’re actually calling the place marked 1, rather than a space beyond the 2, which should have been obvious, but apparently I’m a little tired and didn’t think it through.)
Second, and this is what’s actually causing your error, it’s for inline use. To use it in a *command like *temp or *set, you need to wrap it in quotation marks. So something like this:
*temp foo
*temp bar "@{foo 1 | 2 | 3 }"
*comment Note the quotation marks around the replace.
*set bar +2
This should be 4: ${bar}
Alteratively
*temp bar "@{foo 0|1|2}"
*set bar +2
With your series, we'll get the second number from multireplace (1) + 2 = ${bar}.
Or, a simpler example:
*temp foo 1
*rand foo 1 3
The random number is @{foo one|two|three}.
