Perl:如果包中的子程序将某些内容打印到我的终端,如何在不更改包的情况下在程序中使用其输出?

Abd*_*del 2 perl

我在Perl(Biomart)中使用一个包打印出查询结果.打印输出的语法如下所示:

$query_runner->execute($query);
$query_runner->printResults();
Run Code Online (Sandbox Code Playgroud)

并将我的查询结果打印到我的终端.相反,我希望打印的内容打印到输出文件.我试过了:

$output = "@ARGV[1]";
open OUT , ">$output" or die "Can't open $output: @ARGV[1].txt!\n";
$query_runner->execute($query);
print OUT $query_runner->printResults();
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用,子程序printResults()仍然打印到我的终端而不是输出文件.有没有办法将其输出打印到我的outputfile而不更改包本身的子程序?

Has*_*kun 5

您可以使用select设置默认打印文件句柄,例如.

select (OUT);
Run Code Online (Sandbox Code Playgroud)