Возникли проблемы с отладчиком Perl в Eclipse и PadWalker. Раньше использовал его только для простых однофайловых скриптов. Переменные, объявленные с использованием «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
.
Снимок экрана ниже демонстрирует проблему. Как видите, переменная $james
из пакета Junk2 печатается нормально, но не отображается на дисплее переменных.
Долго искал решение, но не нашел ничего подходящего... есть идеи?
РЕДАКТИРОВАТЬ: обнаружил, что могу «видеть» переменные пакета, если использую отладчик Perl: .
Есть ли способ получить такой же дружественный вывод в IDE, как показывает padwalker?
Спасибо, ребята, которые ответили до сих пор :)
our
являются пакетными переменными, т. е. не имеют лексической области действия и не хранятся на пэде. - person mob   schedule 22.08.2013$Junk2::james
в список переменных? Даже небольшая программа будет иметь множество глобальных переменных, определенных в разных пакетах; Eclipse, вероятно, не захочет по умолчанию добавлять их все в список наблюдения за переменными. - person mob   schedule 22.08.2013our
, являются лексическими переменными, хотя эти лексические переменные имеют псевдонимы для переменных пакета. - person ikegami   schedule 22.08.2013