Training, Open Source computer languages
PerlPHPPythonMySQLApache / TomcatTclRubyJavaC and C++LinuxCSS 
Search for:
Home Accessibility Courses Diary The Mouth Forum Resources Site Map About Us Contact
For 2021 - online Python 3 training - see ((here)).

Our plans were to retire in summer 2020 and see the world, but Coronavirus has lead us into a lot of lockdown programming in Python 3 and PHP 7.
We can now offer tailored online training - small groups, real tutors - works really well for groups of 4 to 14 delegates. Anywhere in the world; course language English.

Please ask about private 'maintenance' training for Python 2, Tcl, Perl, PHP, Lua, etc.
Doubt forming a variable in a foreach

Posted by darioml (darioml), 6 January 2006

I'm a newbie in Tcl and I have a big problem... I'm sure it's very, very stupid...

I have a variable list:
lappend vars "Kp" "Kd" "Da"

and I want to change the values of a set of variables by this way:
set cKp $Kp
set cKd $Kd
set cDa $Da

but with a foreach loop.

I tried:
foreach a_var $vars {
set c$a_var $a_var

but it doesn't work, because it assigns the string "Kp" or "Kd"  or "Da" to cKp, cKd and cDa, respectively.

If I say:
set c$a_var $$a_var

it assigns "$Kp", "$Kd" or "$Da"

Any solution, please?


Posted by admin (Graham Ellis), 6 January 2006
You're looking for double interpollation .... something like

foreach pn {p1 p2 p3} {
set c$pn [set $pn]

is the way to go.  I set variables p1, p2 and p3 to 10, 24 and 35 and after running the loop above I also had variables called cp1 cp2 and cp3 with those same values.

Posted by darioml (darioml), 7 January 2006
Thanks a lot!

It works Ayyy, TCL has a lot of small secrets hidden, he he.


This page is a thread posted to the opentalk forum at and archived here for reference. To jump to the archive index please follow this link.

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2022: Well House Manor • 48 Spa Road • Melksham, Wiltshire • United Kingdom • SN12 7NY
PH: 01144 1225 708225 • FAX: 01144 1225 793803 • EMAIL: • WEB: • SKYPE: wellho