我在Windows中使用perl -d
调试Perl。我正在寻找自动完成功能,因为我必须在其他文件中设置断点,很多次,可能包含长文件夹名称。我在哪里可以为perl -d
设置/启用自动完成?
perl -d script.pl
DB<1> f sub_folder1\sub_folder2\sub_folder3\file.pm
&lt; - 需要在此处自动完成
答案 0 :(得分:4)
如果您输入x \%INC
,您会看到所包含文件的完整列表,您可以grep
,如下所示:
DB<6> x \%INC
0 HASH(0x1a8e960)
'Carp.pm' => '/usr/share/perl5/vendor_perl/Carp.pm'
'Config.pm' => '/usr/lib64/perl5/Config.pm'
'Config_git.pl' => '/usr/lib64/perl5/Config_git.pl'
'Config_heavy.pl' => '/usr/lib64/perl5/Config_heavy.pl'
'Data/Dumper.pm' => '/usr/lib64/perl5/vendor_perl/Data/Dumper.pm'
'Exporter.pm' => '/usr/share/perl5/vendor_perl/Exporter.pm'
....
perl调试器没有内置自动完成功能,但是您可以通过IDE运行调试器来免费自动完成。我使用emacs
(M-x perldb
),它可以轻松处理文件自动完成,并在您单步执行时显示指向代码的指针。
根据调试器内部的帮助,您可以使用部分文件名或正则表达式来减少输入:
DB<1> h f
f filename Switch to viewing filename. File must be already loaded.
filename may be either the full name of the file, or a regular
expression matching the full file name:
f /home/me/foo.pl and f oo\. may access the same file.
Evals (with saved bodies) are considered to be filenames:
f (eval 7) and f eval 7\b access the body of the 7th eval
(in the order of execution).
以下是一个例子:
DB<3> f Dumper.pm
Choosing /usr/lib64/perl5/vendor_perl/Data/Dumper.pm matching 'Dumper.pm':
答案 1 :(得分:0)
通过https://perldoc.perl.org/perldebug.html安装PadWalker模块,可以在completionHandler
下具有一种基本的自动完成形式:
如果安装了PadWalker模块,还可以使用基本的命令行完成功能,包括当前作用域中的词法变量。
它不适用于方法名称之类的东西,但这意味着您可以为当前范围内的变量键入DispatchQueue
而不是perl -d
。