В моей программе на C++ я хочу выполнить команду perl и прочитать результат, возвращаемый исполнением. Я использую POPEN для этого, но я получаю сообщение об ошибке при выполнении моей команды:Ошибка выполнения команды perl с использованием popen в C++
Команда:
string cmd = "perl -ne 's/^\\S+\\s//; if ((/" +
pattern1+ " START/ .. /" + pattern2+ " END/) && /find/)"
" { print \"$_\"}' file";
stream = popen(cmd.c_str(),"r");
Если я выполнить эту команду в командной строке она работает, но в C++ я получаю эту ошибку:
Search pattern not terminated at -e line 1.
команда, которая работает в командной строке, в C++ я уже бежал '\' и '"':
perl -ne 's/^\\S+\\s//; if ((/aaa START/ .. /bbb END/) && /find/) { print "$_"}' file
Если я выполняю эту команду, она работает: «perl -ne print $ _ file». Но моя первоначальная команда этого не делает. Что я делаю неправильно. Благодарю.
Если вы 'cout' этой строки она выглядит, как вы ожидаете? –
Да, он выглядит так, как я хочу, и если я копирую пасту, печатная команда в terminl работает. –
Я не думаю, что это так, см. Недостающие косые черты в моем примере –