linux - 在Linux中使用Tk运行Perl程序报错 "1132148 is not a hash"

标签 linux perl hash x11 tk-toolkit

我正在运行 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/

相关文章:

java - 密码保护 Java 控制台应用程序的最佳方法

python - 表示子类类似于具有一个对象的父类(super class)的结构的最佳方式

linux - 在一个脚本中使用 ssh 和 scp

php - Linux/PHP 问题

linux - 只有 Linux 系统调用的最小 C 库

PHP 在 Windows WSL 中不通过 Nginx 处理

perl - 如何在perl中将参数传递给系统命令

perl打印表输出

perl - 在 Perl HoH 中访问嵌套哈希而不使用keys()?

python - 使用 adler32 对 Python 3 字符串进行确定性散列