Originally Posted by Moros
timer 1 1 set -s %new.var $eval(%test.var,0) gives me the desired result

Here you are preventing evaluation when you start the timer, which indeed works, but keep in mind that whatever you pass in then still has to be valid at the time that the timer triggers. For example, if you unset %test.var before the timer triggers, you will end up with nothing. That may or may not be what you want; often, it is not. When passing in something like a local variable or $1-, preventing evaluation when starting the timer will not work: when the timer actually triggers, the context in which that variable or identifier was valid will be gone.

Alternatively, you can prevent evaluation when the timer triggers. Usually that is a better approach, and also easier: mIRC has a built-in identifier for that, namely $unsafe. For example:

//set -s %test.var $eval($file(mirc.exe).version,0) | timer 1 1 set -s %new.var $unsafe(%test.var)

Saturn, QuakeNet staff