У меня есть следующий фрагмент кода TCL:
#wrong format:
set in_val "12 0 2 0 0 0 1 0 3 698"
#correct format:
#set in_val "12 0 1 0 0 0 1 0 3 698"
set val_ok [regexp {(\d+)\s([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)([01]\s)(\d+)\s(\d+).*} $in_val Var1 Var2 Var3 Var4 Var5 Var6 Var7 Var8 Var9 Var10 Var11]
if {$val_ok==1} {
# correct format
puts "Correct format, continuing..."
puts "$Var2 $Var3 $Var4 $Var5 $Var6 $Var7 $Var8 $Var9 $Var10 $Var11"
} else {
# wrong format
puts "Wrong format, stimulus [$in_val]"
}
Я хочу проверить правильность формата, описанного с помощью функции регулярного выражения. Когда переменная in_val имеет правильный формат, все в порядке, блок if выполняется. Однако, когда формат неверен, вместо ввода блока else я получаю следующую ошибку:
invalid command name "12 0 2 0 0 0 1 0 3 698"
while executing
"$in_val"
invoked from within
"if {$val_ok==1} {
# correct format
puts "Correct format, continuing..."
puts "$Var2 $Var3 $Var4 $Var5 $Var6 $Var7 $Var8 $Var9 $Var10 $Var11"
} else {..."
(file "xxx.tcl" line 3)
Я использую ActiveState ActiveTcl 8.5.11.1 для Windows. Любая идея о том, почему ошибка появляется, когда val_ok=0 и регулярное выражение не совпадает? Спасибо!
J-B