Eu tenho o código abaixo no arquivo perl. A intenção deste comando é adicionar uma linha "- - test 0" no final do arquivo.txt.
system(" find . -type f -name file.txt | xargs sed -i -e "$ a- - test 0" ");
Quando tento executar o script, recebo o erro mostrado abaixo.
Scalar found where operator expected at timeStampConfig.pl line 24, near "" find . -type f -name file.txt | xargs sed -i -e "$ a"
(Missing operator before $ a?)
Number found where operator expected at timeStampConfig.pl line 24, near "test 0"
(Do you need to predeclare test?)
String found where operator expected at timeStampConfig.pl line 24, near "0" ""
(Missing operator before " "?)
syntax error at timeStampConfig.pl line 24, near "" find . -type f -name file.txt | xargs sed -i -e "$ a"
Execution of timeStampConfig.pl aborted due to compilation errors.
Tentei executar a linha abaixo no prompt de comando e funcionou bem.
find . -type f -name file.txt | xargs sed -i -e '$ a- - test 0'
Também tentei usar aspas simples conforme mostrado abaixo, mas acabei com um erro.
system("find . -type f -name file.txt | xargs sed -i -e '$ a- - test 0'");
sed: -e expression #1, char 1: unknown command: `-'
Sou novo em perl, preciso de ajuda com isso.
Quando você deseja aspas duplas dentro de uma string entre aspas duplas, você precisa escapar das aspas duplas:
"...\"foo\"..."
mas neste caso você provavelmente deve substituir as aspas duplas internas por aspas simples:Observe que the
$
precisa ser escapado na string entre aspas duplas. Você também pode separar a construção da string para evitar escapar de alguma coisa: