我將 Perl 5.22.1 與 Win32::Console 一起使用。我有運行 make 的腳本,我認為如果我能以紅色輸出錯誤會很好。Win32::Console 有 stdout 和 sterr 的句柄,所以我想我可以為各個句柄賦予顏色,但如果我修改 stderr,那么它也會修改 stdout。有沒有辦法用 Win32::Console 或其他模塊做到這一點。
測驗.pl
use strict;
use warnings;
use Win32::Console;
my $stdout = new Win32::Console(STD_OUTPUT_HANDLE);
my $stderr = new Win32::Console(STD_ERROR_HANDLE);
sub testOutput
{
print("Testing output\n");
system("ls error");
system("ls *.pl");
print("\n");
}
testOutput();
$stdout->Attr($FG_BLUE);
testOutput();
$stderr->Attr($FG_RED);
testOutput();
$stdout->Write("stdout print\n");
$stderr->Write("stderr print\n");
輸出
uj5u.com熱心網友回復:
發生這種情況是因為無論您呼叫哪個明顯的“流” Attr
,最終,兩者都連接到控制臺,并且Win32::Console
所做的只是將給定的控制字符序列輸出到控制臺。
如果我理解正確,您希望 的stderr
輸出ls
以一種顏色顯示,而 的stdout
輸出ls
以另一種顏色顯示。在這種情況下,您可能希望使用Capture::Tiny來捕獲這些流并使用您想要的設定輸出它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506246.html
上一篇:如何從帶有其他檔案串列的fasta檔案中提取用戶定義區域
下一篇:從目錄中的多個檔案中搜索多行字串