【发布时间】:2013-08-22 15:04:15
【问题描述】:
在 Eclipse 和 PadWalker 中的 Perl 调试器存在一些问题。之前只将它用于简单的单文件脚本。使用“my”声明的变量。它们在调试器“变量”窗口中显示良好。
现在我正在使用其他人的更复杂的脚本,我没有看到使用“我们的”声明的变量。为了进行调查,我将其归结为一个非常简单的示例
junk.pl:
use strict;
use warnings;
require 'junk2.pl';
package Junk;
my $simon = "SOMETHING";
print "JUNK " . $Junk2::james . "\n";
print "JUNK " . $simon . "\n";
junk2.pl:
package Junk2;
our $james;
$james = "FOO";
1;
单步执行代码,变量my $simon 可以正常显示在调试器窗口中,但变量our $james 没有。调试器工作正常:程序运行,输出窗口显示正确的输出...只是变量窗口无法显示$james。
下面的屏幕截图演示了该问题。如您所见,Junk2 包中的变量 $james 打印正常,但未出现在变量显示中。
一直在寻找解决方案,但找不到任何匹配的东西...有什么想法吗?
编辑:发现如果我使用 Perl 调试器,我可以“看到”包变量: 。
有没有办法在 IDE 中以友好的方式获得相同的输出,例如 padwalker 表演?
感谢到目前为止回答的人:)
【问题讨论】:
-
our变量是包变量,即没有词法范围,也没有存储在 pad 上。 -
@mob,谢谢。你知道是否有任何其他调试工具/插件可以用来以与词法范围变量相同的方式查看这些变量?
-
我不熟悉如何将 Eclipse 与 Perl 一起使用。您可以将变量
$Junk2::james添加到变量列表中吗?即使是一个小程序,也会在许多不同的包中定义许多全局变量;默认情况下,Eclipse 可能不想将它们全部添加到变量监视列表中。 -
@mob,用
our声明的变量是词法变量,尽管这些词法变量被别名为包变量。