Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Perl脚本中重新重定向输出到标准输出_Perl_Debugging - Fatal编程技术网

从Perl脚本中重新重定向输出到标准输出

从Perl脚本中重新重定向输出到标准输出,perl,debugging,Perl,Debugging,假设我正在调试一个Perl脚本,其中该脚本被如下调用: perl -d test.pl > file.txt 使用test.pl: print "Hello world\n"; my $a = 2; print "$a\n"; 1; 是否有任何方法将脚本的输出从调试器内重新重定向到调试器标准输出,以便打印语句在调试器的滚动窗口上发送其输出 如果没有,是否有任何方法可以从调试器内部发出命令,将当前的所有内容清除到file.txt?您可以在调试时计算任意Perl,而DB::out是调试器

假设我正在调试一个Perl脚本,其中该脚本被如下调用:

perl -d  test.pl > file.txt
使用
test.pl

print "Hello world\n";
my $a = 2;
print "$a\n";
1;
是否有任何方法将脚本的输出从调试器内重新重定向到调试器标准输出,以便打印语句在调试器的滚动窗口上发送其输出


如果没有,是否有任何方法可以从调试器内部发出命令,将当前的所有内容清除到
file.txt

您可以在调试时计算任意Perl,而DB::out是调试器为输出而打开的文件句柄。所以只需使用
选择DB::OUT

给定测试:

use v5.14;
say 1;
say 2;
say 3;
use v5.14;
say 1;
say 2;
say 3;
下面是一个日志,演示了select的使用:

$ perl -d test > log

Loading DB routines from perl5db.pl version 1.33
Editor support available.

Enter h or `h h' for help, or `man perldebug' for more help.

main::(test:2):     say 1;
  DB<1> n
main::(test:3):     say 2;
  DB<1> select DB::OUT

  DB<2> n
2
main::(test:4):     say 3;
  DB<2> n
3
Debugged program terminated.  Use q to quit or R to restart,
  use o inhibit_exit to avoid stopping after program termination,
  h q, h R or h o to get additional info.
  DB<2> q
$ cat log
1
$perl-d测试>日志
从perl5db.pl版本1.33加载数据库例程
编辑器支持可用。
输入h或“h”以获取帮助,或输入“man perldebug”以获取更多帮助。
主要:(测试:2):说1;
分贝
主要:(测试:3):说2;
DB select DB::OUT
分贝
2.
主要:(测试:4):说3;
分贝
3.
已调试程序已终止。使用q退出,或使用R重新启动,
使用o inhibit_exit避免程序终止后停止,
h q、h R或h o以获取其他信息。
分贝q
$cat日志
1.

尽管@Julian Fondren可以工作,但远程工作需要做一点小改动

给定测试:

use v5.14;
say 1;
say 2;
say 3;
use v5.14;
say 1;
say 2;
say 3;
在终端1上的任何主机和端口上启动侦听器(此处localhost:12345):

对于readline支持使用(您也可以在
perl-d
上使用):

并在另一个终端(如终端2)上开始测试:

端子1上的输入/输出:

Connection from 127.0.0.1:42994

Loading DB routines from perl5db.pl version 1.49
Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(test:2): say 1;
  DB<1> n
main::(test:3): say 2;
  DB<1> select $DB::OUT

  DB<2> n
2
main::(test:4): say 3;
  DB<2> n
3
Debugged program terminated.  Use q to quit or R to restart,
use o inhibit_exit to avoid stopping after program termination,
h q, h R or h o to get additional info.  
  DB<2> 
把美元印在钞票上

select $DB::OUT
注意:我不介意有人解释更改背后的魔力,但不要问我,因为我不知道。

有关如何刷新perl中的输出,请参阅。
1
select $DB::OUT