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)