我想在 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");
是我尝试重定向 stderr 以便能够使用 stdout 处理它但它不起作用的地方。
该解决方案必须在 Windows 中工作。