From d4eadab571bf5e8ea00d19598f129a708a322d15 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Mon, 22 Aug 2022 17:21:56 +0300 Subject: [PATCH] =?utf8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=B8=D1=81=D0=B0?= =?utf8?q?=D0=BB=20zdns=20=D0=BD=D0=B0=20Tcl?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit http://www.git.stargrave.org/?p=zdns.git;a=commitdiff;h=bb68fcc5ab280623651b31953e149d364d3f7bf9 Не преследуя никакой практической цели, кроме как потрогать Tcl вновь, чтобы развеяться. Этот язык я в руки не брал с момента написания tofuproxy (который тоже почти не трогается, ибо just works -- почти все HTTP запросы на моём компьютере проходят через него, даже WARC временами использую). И вот почти ничего не помня про Tcl, я почти без единого спотыкания и почти без единой ошибки во время выполнения всё переписал. Только одна ошибка запомнилась: если закрыть канал, являющийся stdout-ом от другой команды, не дочитав всё до конца (я читаю OpenPGP ключ и выхожу когда нужный UID был прочитан), то программа выходит с ошибкой (что ожидаемо) и Tcl ловит эту ошибку падая. Ну и забыл что глобальные переменные по умолчанию не видны в процедурах. Всю документацию, кроме одной базовой книжки в PDF по Tcl, я брал из man-ов, благо до которых у меня прекрасно работает мой клёвый настроенный completion в zsh: % man index [...] ... manual page, section 5 (file formats and conventions) INDEX portindex ... manual page, section 9 (kernel features) bhnd_get_core_index ifaddr_byindex ... manual page, section n (new documentation) auto_mkindex.tcl86 lindex.tcl86 pkg_mkIndex.tcl86 ... parameter ZSH_AUTOSUGGEST_ORIGINAL_WIDGET_PREFIX И эти man-ы очень понравились, наличием ценнейших простых примеров, где тот же намёк на использование while {getc} и catch{close} имеется. Непередаваемое чувство, когда ты пишешь всякий код, много или не очень, а он просто берёт и выполняется без проблем. Такое у меня только с Go было. Tcl очень приятен! -- 2.50.0