Perl Tcl :: pTk читать версию Tcl - PullRequest
0 голосов
/ 25 мая 2018

Я хочу использовать Perl для чтения в версии Tcl, с которой связан модуль Tcl::pTk.Я нашел следующее, которое работает нормально

use strict;
use warnings;

use Tcl::pTk;

my $int = new Tcl::pTk;

$int->Eval(<<'EOS');
# pure-tcl code to create widgets (e.g. generated by some GUI builder)
text .e
## http://wiki.tcl.tk/1626#tk_version
.e insert end "tcl_version      $tcl_version\n"
.e insert end "tcl_patchLevel   $tcl_patchLevel\n"
.e insert end "tk_version       $tk_version\n"
.e insert end "tk_patchLevel    $tk_patchLevel\n"
.e insert end "tk_library       $tk_library\n"
pack .e
EOS

my $e = $int->widget('.e');     # get .e entry into play
$int->MainLoop;

Это отображает значение в графическом интерфейсе, но я хочу использовать $tcl_version в других частях моего скрипта.В этом я терплю неудачу, поскольку $tcl_version, кажется, не существует.Мне не нужна часть с графическим интерфейсом, только значения скаляров.

Ответы [ 2 ]

0 голосов
/ 23 февраля 2019

С тех пор я нашел недокументированные методы в Tcl :: pTk, $int->tclVersion и $int->tclPatchlevel, которые эквивалентны $int->Eval('info tclversion') и $int->Eval('info patchlevel') соответственно.

Они уже использовались внутри в Tcl:: ПТК.Я не планирую удалять их, но также не знаю, будет ли хорошей идеей держать их в долгосрочной перспективе или делать их «публичными» / документированными, поэтому может быть лучше придерживаться подхода существующего ответа.(Tcl :: Tk, на котором основан Tcl :: pTk, не имеет этих методов.)

0 голосов
/ 25 мая 2018

Следует попробовать простейшую вещь, которая могла бы работать:

my tcl_version = $int->Eval('info tclversion');

Альтернативно и эквивалентно на стороне Tcl:

my tcl_version = $int->Eval('set tcl_version');

Все команды Tcl дают результат, поэтому следуетчтобы отразиться здесь.Кроме того, большую часть времени вам лучше получить уровень исправлений для отчетов о версиях;языковая версия предназначена только для грубых функций, а не для каких-либо подробностей, таких как отчеты о состоянии системы (например, вам нужен номер патча для отчетов об ошибках).

...