You are here

Iwidgets 패키지를 사용하면서 source 로 array로된 외부 파일 실행시 문제발생 해결방법 조언 부탁

Iwidgets 패키지를 사용하면서 버튼을 누르면 source 명령어를 이용하여 외부 파일을 실행하면 "variable isn't array"가 발생 합니다.
프로그램은 test-main.tcl과 array로 만들어진 test-sub.tcl 파일로 구성되어 있습니다.
test-main 프로그램에서 버튼을 누르면 test-sub를 실행 합니다.
Iwidgets을 사용하지 않으면 문제는 발생하지 않으나, Iwidgets을 사용하여 GUI를 만들고 있기 때문에 Iwidgets를 사용하면서 문제를 해결 할 수 있는 방법에 대한 조언 부탁드립니다.

아래 프로그램 파일과 에러메세지 입니다.

[test-main.tcl]
package require Iwidgets

button .b -background orange -text "GO" -command {
if {[.md activate]} {
update
source "test-sub.tcl"
} else {
puts "selected: No"
}
}
pack .b -fill x -expand yes -padx 1 -pady 2 ;# Test Go buttorn

iwidgets::messagedialog .md -title "Message Dialog" -modality application -bitmap questhead -text "Are you sure?"
.md hide Help
.md buttonconfigure OK -text "Yes"
.md buttonconfigure Cancel -text "No"

[test-sub.tcl]
set cmd(1) "show clock"
set cmd(2) "show interface vlan 1"

[error 메세지]
can't set "cmd(1)": variable isn't array
can't set "cmd(1)": variable isn't array
while executing
"set cmd(1) "show clock""
(file "test-sub.tcl" line 1)
invoked from within
"source "test-sub.tcl""
invoked from within
".b invoke"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list $w invoke]"
(procedure "tk::ButtonUp" line 24)
invoked from within
"tk::ButtonUp .b"
(command bound to event)