Может ли кто-нибудь сказать мне, почему это не печатает ничего, кроме обычного выхода скрипта?Вывод команды Perl с использованием трубы
open(PS, "python /home/me/someprogram.py --option1 A -d somedomain.com |") || die "Failed: $!\n";
while (<PS>) {
my $line = $_;
print "LINE = $line\n";
}
Другими словами, он никогда не печатает:
ЛИНИЯ = ...
Только регулярный выход, как если бы я был запущен непосредственно из командной строки.
Принимая во внимание следующие работы тонкодисперсных:
open(PS, "ps waux |") || die "Failed: $!\n";
while (<PS>) {
my $line = $_;
print "LINE = $line\n";
}
EDIT (решаемые)
Это работает
open(PS, "python /home/me/someprogram.py --option1 A -d somedomain.com 2>&1 |") || die "Failed: $!\n";
while (<PS>) {
my $line = $_;
print "LINE = $line\n";
}
'питон .. 2> & 1' –
Спасибо, что сделали это - открытая (PS, "питон /home/me/someprogram.py --option1 -d somedomain.com 2> & 1 |") – someuser
@mpapec Вам интересно объяснить, почему объединение stderr с stdout заставляет его работать, пожалуйста? Благодарю. –