Can';在epic-eclipse中看不到内部变量
我已经在eclipse中安装了epic以调试perl。起初,调试时我看不到任何变量。我发现我需要安装PadWalker。这部分解决了问题,因为我可以看到所有变量,但缺少内部变量(如@ARGV)。有什么建议吗?Can';在epic-eclipse中看不到内部变量,eclipse,perl,epic,Eclipse,Perl,Epic,我已经在eclipse中安装了epic以调试perl。起初,调试时我看不到任何变量。我发现我需要安装PadWalker。这部分解决了问题,因为我可以看到所有变量,但缺少内部变量(如@ARGV)。有什么建议吗? 使用centOS 6、eclipse版本:开普勒服务发行版1构建id:20130919-0819和epic,可以从%main::namespace: use Data::Dumper; my @val; my @names; for my $name (keys %main::){
使用centOS 6、eclipse版本:开普勒服务发行版1构建id:20130919-0819和epic,可以从%main::namespace:
use Data::Dumper;
my @val;
my @names;
for my $name (keys %main::){
my $glob = $main::{$name};
if (defined ${$glob}) {
push @names, '$' . $name;
push @val, ${$glob};
}
if (defined @{$glob}) {
push @names, '@' . $name;
push @val, [@{$glob}];
}
if (defined %{$glob}) {
push @names, '%' . $name;
push @val, {%{$glob}};
}
}
my $d = Data::Dumper->new(\@val, \@names);
print STDERR $d->Dump
输出如下:
$@ARGV = [
'aaa',
'bbb',
'ccc'
];
$@INC = [
'/usr/lib/perl5/5.10/i686-cygwin',
'/usr/lib/perl5/5.10',
'/usr/lib/perl5/site_perl/5.10/i686-cygwin',
'/usr/lib/perl5/site_perl/5.10',
'/usr/lib/perl5/vendor_perl/5.10/i686-cygwin',
'/usr/lib/perl5/vendor_perl/5.10',
'/usr/lib/perl5/vendor_perl/5.10',
'/usr/lib/perl5/site_perl/5.8',
'/usr/lib/perl5/vendor_perl/5.8',
'.'
];
$%INC = {
'warnings.pm' => '/usr/lib/perl5/5.10/warnings.pm',
'Carp.pm' => '/usr/lib/perl5/5.10/Carp.pm',
'XSLoader.pm' => '/usr/lib/perl5/5.10/i686-cygwin/XSLoader.pm',
'bytes.pm' => '/usr/lib/perl5/5.10/bytes.pm',
'warnings/register.pm' => '/usr/lib/perl5/5.10/warnings/register.pm',
'overload.pm' => '/usr/lib/perl5/5.10/overload.pm',
'strict.pm' => '/usr/lib/perl5/5.10/strict.pm',
'Exporter.pm' => '/usr/lib/perl5/5.10/Exporter.pm',
'Data/Dumper.pm' => '/usr/lib/perl5/5.10/i686-cygwin/Data/Dumper.pm'
};
$%ENV = {
'USERPROFILE' => 'C:\\Users\\Alex',
'HOMEDRIVE' => 'C:',
'PS1' => '\\[\\e]0;\\w\\a\\]\\n\\[\\e[32m\\]\\u@\\h \\[\\e[33m\\]\\w\\[\\e[0m\\]\\n\\$ ',
'COMMONPROGRAMFILES' => 'C:\\Program Files (x86)\\Common Files',
'APPDATA' => 'C:\\Users\\Alex\\AppData\\Roaming',
'PROGRAMFILES' => 'C:\\Program Files (x86)',
'OS' => 'Windows_NT',
'CommonProgramFiles(x86)' => 'C:\\Program Files (x86)\\Common Files',
'LOCALAPPDATA' => 'C:\\Users\\Alex\\AppData\\Local',
'PWD' => '/home/Alex',
'USER' => 'Alex',
'LANG' => 'C.UTF-8',
'PATHEXT' => '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
'PRINTER' => 'HP Officejet 4620 series (Network)',
'SHLVL' => '1',
'NUMBER_OF_PROCESSORS' => '8',
'HOMEPATH' => '\\Users\\Alex',
'FP_NO_HOST_CHECK' => 'NO',
'QMAKESPEC' => 'cygwin-g++',
...
Perl有词法变量(用
my
声明)、包变量(如$Foo::bar
)和内置超全局变量,这些变量被强制放入主
包中(因此它们类似于普通包变量)。除非用我们的声明,否则包变量不能通过PadWalker看到。@ARGV
数组是一个超全局数组,在除main
之外的包中不会直接可见。您的问题是未声明的全局变量,还是内置的超全局变量?请注意,例如$a
和$b
是内置的,但不是超全局的。我希望能够看到所有变量(我不在乎它们是内部变量、全局变量还是超全局变量,就像openPerl IDE一样),例如@和$(输入函数时)以及@ARGV等等。。。有解决方案吗?我不知道有什么解决方案,但在有人用答案写下答案之前,您可以使用以下解决方法:捕获对您感兴趣的每个包变量/全局变量的词汇引用,例如:my$\u ARGV=\@ARGV代码>。是-这是我现在使用的解决方案…:(