【发布时间】:2018-05-25 13:16:51
【问题描述】:
我想用 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;
这会在 GUI 中显示值,但我想在脚本的其他部分使用 $tcl_version。在这我失败了,因为$tcl_version 似乎不存在。我不需要 GUI 部分,只需要标量的值。
【问题讨论】:
-
Tcl::pTk 本身并没有真正“链接”或绑定到特定的 Tcl/Tk 版本,因为它是纯 Perl。它是 Tcl.pm 库(Tcl::pTk 使用的),可以编译为使用特定的 Tcl/Tk 版本。这里接受的答案是在运行时检查正在使用哪个版本的好方法。