我正在运行 Centos 7、Perl 5 和 X11。在运行从在线教程复制的第一次 perl 程序时 -
#!/usr/bin/perl
use strict;
use Tk;
my $mw = new MainWindow;
my $label = $mw -> Label(-text=>"Hello World") -> pack();
my $button = $mw -> Button(-text => "Quit",
-command => sub { exit })
-> pack();
MainLoop;
然后从命令行调用 -
./test.pl
我收到以下错误-
[foo@localhost Desktop]$ ./test.pl
1132148 is not a hash at /usr/lib64/perl5/vendor_perl/Tk/MainWindow.pm line 53.
Aborted (core dumped)
注释掉行后,错误似乎是由“my $mw =”行产生的
谷歌搜索错误消息,我找到了表明它可能是 X11 已知问题但不确定的引用资料。也不确定从哪里开始寻找答案。
我已经(使用 yum)仔细检查以确保 tk、perl-tk 和 tcl 是最新的。我试图检查 X 安装的状态,但我有点害怕重新安装,以免让事情变得更糟。
最佳答案
mbethke 的评论指出了这个特定错误的真正问题所在。
事实上,在 Linux 上,您可以使用 wish
命令(应该会打开一个小窗口)快速检查 Tk 是否正常工作。
遇到问题时,wish打不开,输出如下
unknown color name 'BACKGROUND'
并且由于 wish 和此错误比某些 Perl 和 Tk 脚本更常见,您可以找到更多答案,例如 this one ,您可以在其中找到一种清除定义的颜色的方法:
xrdb -load /dev/null
xrdb -query
(xrdb -query
用于查询当前颜色配置。)
然后,一切都应该修复。
关于linux - 在Linux中使用Tk运行Perl程序报错 "1132148 is not a hash",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585570/