Em Perl, por que eu recebo um erro de sintaxe quando tento eval string de uso?
Pergunta
Por que não é este trabalho?
eval "$response = $ua->request($r);"
print "$@";
dá:
syntax error at (eval 8) line 1, near "="
Solução
Ele não está funcionando porque a cadeia entre aspas está sujeita a interpolação, que não está a ir bem, com aquelas variáveis ??que estão sendo expandidos no lugar. E você precisa de um ponto e vírgula fora do seu eval, não tanto no seu interior. Tente aspas simples assim:
eval '$response = $ua->request($r)';
Outras dicas
A melhor pergunta é por que você está usando um eval corda, em vez de um eval bloco?
eval { $response = $ua->request($r); }
print "$@";
Uma melhor ainda melhor pergunta é por que você está usando eval em primeiro lugar? Eu suspeito que você está usando LWP::UserAgent
ea menos que você implementar seu próprio objeto de solicitação, o 'método request` é improvável morrem.
Assim, por que não simplesmente usar:
$response = $ua->request($r);
?
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow