如何捕获已执行的Perl代码块的STDOUT / STDERR?

时间:2019-01-07 01:06:18

标签: perl debugging stdout stderr

我正在为自己的调试器模块Devel::AllSubs编写单元测试,因此需要检查它是否在STDERR上的演示代码上打印了正确的字符串。所以我假设要添加像这样的代码:

use Test::More;
use Devel::AllSubs;
...
subtest "stderr and stdout" => sub {
    {
        package main;
        sub foo { bar(); }
        sub bar { print "Hello, world"; 1; }
        foo();
        1;
    }

};

在STDERR执行{ package main; ... }块之后,必须有

main::foo 
    main::bar 

但是如何捕获{ package main; ... }块的STDOUT / STDERR并将其与正确的字符串进行比较(例如,使用Test::More::is)呢?

0 个答案:

没有答案