Маршрутизаторы Cisco, как правило, используют старые версии Tcl и не имеют большого количества доступных пакетов расширений. Это означает, что вы довольно ограничены в том, что вы можете сделать. К счастью, для создания данных, которые могут быть собраны и проанализированы Perl, на самом деле это довольно просто.
Давайте использовать JSON в качестве формата обмена. (Возможны и другие.) Ответ Даксима говорит вам, как анализировать JSON, но это довольно просто, потому что вы работаете в контексте, которым можете управлять. Как сгенерировать данные JSON в этом старомодном Tcl? Самый простой способ - с помощью команды subst
- она долгое время не изменялась в Tcl, поэтому вы определенно ее получили - и несколько вспомогательных команд. Вот схема:
proc getFoo {} {
# Some regular Tcl code to get the value
}
proc getFruit {variety} {
# Some regular Tcl code to get the value
}
set someIntValue [expr { 1 + 2 * 3 }] ;# Or whatever...
set jsonTemplate {
{
"foo": [getFoo],
"bar": {
"pears": "[getFruit pears]",
"apples": "[getFruit apples]"
},
"grill": $someIntValue
}
}
puts [subst $jsonTemplate]
ОК, будьте осторожны: я понятия не имею, какие данные вы хотите получить («вложенные хэши» не очень полезны). Вы должны будете добавить цитату / обратную косую черту, где это необходимо. Поместите процедуры перед вызовом subst
(порядок вещей имеет значение в Tcl).