Значение ie_ports
равно dut.m0.x dut.m1.y dut.m2.z dut.m3.z dut.a0.vout
, и вы пытаетесь разделить любой из символов ( | { } )
, которых нет в ie_ports
, поэтому у вас останется весь список.
Я не уверен, что именно вы пытаетесь сделать, но вы можете перебрать сам список:
foreach n $ie_ports {
puts [string trim $n]
}
Другая проблема заключается в том, что ваша процедура get_ie_conn_ports
заключает список $my_list
в другой список, который не нужен. Вы должны вернуть сам список:
proc get_ie_conn_ports {ie} {
global p
set my_list {}
foreach n [split $p ","] {
lappend my_list $n
}
return $my_list
}
Вы также можете изменить следующую строку:
set ie_ports [get_ie_conn_ports ie]
до
set ie_ports [get_ie_conn_ports $ie]
Выполнение изменений в вашем коде в codepad дает следующие результаты, когда каждый участник находится в строке:
dut.m0.x
dut.m1.y
dut.m2.z
dut.m3.z
dut.a0.vout