我可以控制一个perl脚本,这个脚本是另一个早期需要的CGI脚本。我需要捕获主脚本的所有输出,并能够以某种方式更改它。
这是实际的链接:
[index.cgi] > (require) > [header.pl] > (eval 'cat ...') > [my_script.pl]
我知道我可以使用END块在整个程序结束时制作后处理部分,但我需要一种方法来开始捕获所有输出。
编辑:我刚刚找到了Capture::Tiny,它允许我们:
use Capture::Tiny ':all';
($stdout, $stderr, @result) = capture {
# your code here
};
但这需要我将所有代码放在花括号之间,这是不可行的,因为我无法访问主要的调用脚本(需要我的脚本)。这有助于澄清我想在执行句子后立即开始捕获输出。
答案 0 :(得分:2)
将以下内容放入您的来电者执行的文件中。
TimerHelper.shared.timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: true, block: { (timer) in
print("a")
})
答案 1 :(得分:-1)
这解决了我的问题:
my $OUTPUT;
my $OUTPUT_FH;
my $OLD_FH;
open( $OUTPUT_FH, '>', \$OUTPUT ) or die;
$OLD_FH = select $OUTPUT_FH;
END {
select $OLD_FH;
close $OUTPUT_FH;
# Change the output
$OUTPUT =~ s/pattern/replacement/flag;
print $OUTPUT;
}