In Perl, perché visualizzo un errore di sintassi quando provo ad usare string eval?
Domanda
Perché non funziona?
eval "$response = $ua->request($r);"
print "$@";
dà:
syntax error at (eval 8) line 1, near "="
Soluzione
Non funziona perché la stringa tra virgolette doppie è soggetta all'interpolazione, che non andrà bene, con quelle variabili che vengono espanse in posizione. E hai bisogno di un punto e virgola fuori dal tuo giudizio, non tanto al suo interno. Prova virgolette singole in questo modo:
eval '$response = $ua->request($r)';
Altri suggerimenti
Una domanda migliore è perché stai usando una stringa eval, invece di una block eval?
eval { $response = $ua->request($r); }
print "$@";
Una domanda ancora migliore è perché stai usando eval in primo luogo? Ho il sospetto che tu stia usando LWP :: UserAgent
e, a meno che tu non implementi il ??tuo oggetto richiesta, è improbabile che il metodo 'request` muoia.
Quindi, perché non usare semplicemente:
$response = $ua->request($r);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow