我想在perl中運行一個外部命令並過濾一些行。 我不知道如何過濾到stderr的行。我有以下代碼現在:Perl合併窗口中的輸出和stderr和過濾行
#!/usr/bin/env perl
use File::Spec;
#open STDERR, '>', File::Spec->devnull() or die "could not open STDERR: $!\n";
open(FILEHANDLE, '-|', 'Mycmd') or die "Cannot fork: $!\n";
open(STDERR, ">&FILEHANDLE");
while(defined(my $line = <FILEHANDLE>)) {
chomp($line);
if($line =~ m/text1/ or
$line =~ m/text2/ or
$line =~ m/text3/
) {
# do nothing
}
else {
print "$line\n";
}
}
close FILEHANDLE or die "child error: $!\n";
行
open(STDERR, ">&FILEHANDLE");
是我嘗試重定向標準錯誤能夠與標準輸出來處理它,但它不工作。
該解決方案將不得不在Windows中工作。
你關閉'STDERR'第一?我不認爲你可以打開已經打開的「FH」。 –