في بيرل، لماذا أحصل على خطأ في بناء الجملة عند محاولة استخدام وحدة التقييم سلسلة؟
سؤال
لماذا ليس على هذا العمل؟
eval "$response = $ua->request($r);"
print "$@";
ويعطي:
syntax error at (eval 8) line 1, near "="
المحلول
ومن لا يعمل لديك سلسلة مقتبسة مزدوجة قابلة للاستيفاء، والتي لن تسير على ما يرام، مع تلك المتغيرات يجري توسيعها في المكان. وتحتاج فاصلة منقوطة خارج حدة التقييم الخاص بك، وليس ذلك بكثير داخله. محاولة علامات الاقتباس المفردة مثل ذلك:
eval '$response = $ua->request($r)';
نصائح أخرى
وسؤال الأفضل هو لماذا كنت تستخدم وحدة التقييم سلسلة، بدلا من وحدة التقييم كتلة؟
eval { $response = $ua->request($r); }
print "$@";
وهناك سؤال أفضل الأفضل هو لماذا كنت تستخدم وحدة التقييم في المقام الأول؟ وأظن أن كنت تستخدم LWP::UserAgent
وإلا إذا كنت تنفيذ الخاص الكائن طلب الخاص، 'طريقة request` من غير المرجح لا يموت.
وهكذا، لماذا لا مجرد استخدام:
$response = $ua->request($r);
لا تنتمي إلى StackOverflow