Perl 无法捕获 bzip2 控制台输出
Perl can't catch bzip2 console output
我的 perl + gtk GUI 应用程序有些问题。为什么 perl 不能从控制台捕获 bzip2 的输出文本?输出不会被捕获到变量中,而只是打印在控制台中。我对任何其他程序都没有问题 - 它只是 bzip2。
我的代码:
wypisz($cmd);
my $out = `$cmd`;
wypisz($out);
wypisz("end");
结果:$cmd
和 "end" 打印正确 - 仅此而已。 Bzip2 的输出只是打印wypisz()
是我用来将文本放入 gtkTextView
:
的函数
sub wypisz {
my $text = shift;
my $textbuffer = $::Glade->get_widget( 'v_console' )->get_buffer;
my $textiter = $textbuffer->get_end_iter;
$textbuffer->insert($textiter,"$text\n");
$::Glade->get_widget( 'v_console' )->set_buffer($textbuffer)
}
尝试
my $out = `$cmd 2>&1`;
将 stderr 重定向到 stdout
我的 perl + gtk GUI 应用程序有些问题。为什么 perl 不能从控制台捕获 bzip2 的输出文本?输出不会被捕获到变量中,而只是打印在控制台中。我对任何其他程序都没有问题 - 它只是 bzip2。
我的代码:
wypisz($cmd);
my $out = `$cmd`;
wypisz($out);
wypisz("end");
结果:$cmd
和 "end" 打印正确 - 仅此而已。 Bzip2 的输出只是打印wypisz()
是我用来将文本放入 gtkTextView
:
sub wypisz {
my $text = shift;
my $textbuffer = $::Glade->get_widget( 'v_console' )->get_buffer;
my $textiter = $textbuffer->get_end_iter;
$textbuffer->insert($textiter,"$text\n");
$::Glade->get_widget( 'v_console' )->set_buffer($textbuffer)
}
尝试
my $out = `$cmd 2>&1`;
将 stderr 重定向到 stdout