Чтобы получить как STDOUT, так и STDERR в переменную, используйте следующий фрагмент кода, используя обратные апострофы (``).
Убедитесь, что 2>&1 находится в конце вашей команды, чтобы перенаправить STDERR в STDOUT.
Если указана неверная команда,
my $Temp_return;
$Temp_return = `lse 2>&1`;
print "return = " . $Temp_return . "\n";
Вывод ошибки
return = 'lse' is not recognized as an internal or external command, operable program or batch file.
Для правильной команды вы получите соответствующий результат.
В качестве дополнительной информации приведены различные способы выполнения команды в Perl.
system(): если вы хотите выполнить команду и не заинтересованы в чтении вывода консоли выполненной команды.
exec : когда вы не хотите возвращаться к вызывающему скрипту Perl. использовать то же самое.
обратные кавычки: когда вы хотите сохранить/прочитать консольный вывод команды в переменную Perl. Первоначально я ошибочно подумал, что вместо этого необходимо использовать Single cores ('') для обратных кавычек (``) и запутаться, потому что это почти похоже на Single cores (''), пожалуйста, обратите внимание.
open() : когда вы хотите передать команду (в качестве ввода или вывода) в свой скрипт.
Надеюсь, это может быть полезно для вас..... :)
BR, Джерри Джеймс
person
HateStackOverFlow
schedule
29.09.2017