i apologize for the noise. i should have tested befoqe posting.
rog, thank you for correcting me.

On 8/14/08, roger peppe <[EMAIL PROTECTED]> wrote:
> On Thu, Aug 14, 2008 at 12:20 PM, kazumi iwane <[EMAIL PROTECTED]> wrote:
>> if you want to delay the expansion of an env var until fn invocation,,use
>> eval.
>>
>> % fn foo {eval echo $$bar}
>
> sorry, but that's so, so wrong.
>
> 1)  $$bar gives the value of the variable
> named by the contents of the variable bar,
> so that the above, given that $bar contains 'baz'
> will echo $baz.
>
> 2) $$bar above is evaluated _before_ eval is invoked,
> so the line is not very different from {echo $$bar}, except that
> if $$bar holds any syntax characters they'll get interpreted by the shell.
> it's almost never necessary to use eval with rc.
>
> 3) expansion of env. vars *is* delayed until fn invocation.
> e.g.
> % fn foo {echo $bar}
> % bar = baz
> % foo
> baz
> %
>
> it just seems as if the local variable assignment isn't propagated
> into the fn context. i don't have time to look into it now (i really
> shouldn't be spending time writing this email, but i couldn't resist the
> bait).
>
>   rog.
>
>

Reply via email to