Я хотел бы вызвать скрипт из моего кода Perl и захватить его STDERR и STDOUT, объединенные вместе.
Я обычно использую capture из IPC::System::Simple, но кажется, что ti не позволяет захватывать STDERR.
capture
IPC::System::Simple
Вы можете перенаправить STDERR (дескриптор файла 2) в STDOUT (дескриптор файла 1) с помощью 2>&1.
2>&1
С perlop на операторе qx//:
qx//
Потому что обратные помехи не влияют стандартная ошибка, используйте файл оболочки синтаксис дескриптора (при условии, что оболочка поддерживает это), если вы хотите обратиться этот. Чтобы захватить команду STDERR и STDOUT вместе: $ output = `cmd 2> & 1`;
Потому что обратные помехи не влияют стандартная ошибка, используйте файл оболочки синтаксис дескриптора (при условии, что оболочка поддерживает это), если вы хотите обратиться этот. Чтобы захватить команду STDERR и STDOUT вместе:
$ output = `cmd 2> & 1`;
В системе POSIX вы можете делать следующее.В Windows это будет работать в cygwin .
my @lines = capture("some command 2>&1");
Однако, если вы хотите отличить строки STDERR от строк STDOUT, возможно, вам нужно использовать IPC :: Open3 или неверно названный IPC :: Open3 :: Util .