في بيرل، لماذا أحصل على خطأ في بناء الجملة عند محاولة استخدام وحدة التقييم سلسلة؟

StackOverflow https://stackoverflow.com/questions/1227605

  •  22-07-2019
  •  | 
  •  

سؤال

لماذا ليس على هذا العمل؟

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);

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top