كيف يمكنني حل حالة "الاستخدام غير المجدي للمتغير في سياق فارغ"؟
سؤال
كيف يمكنني حل حالة "الاستخدام غير المجدي للمتغير في سياق فارغ"؟
على سبيل المثال:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
return $err;
أحصل على تحذيرات مثل "الاستخدام غير المجدي للمتغير في سياق فارغ"؟لماذا؟كيف يمكنني حلها؟
المحلول
في حال كنت ترغب في تسلسل الحجج ، استخدم "."
المشغل أو join
:
my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";
التالي هو السبب في أن بيرل يمنحك تحذيرات.
أنت تعين على متغير القياسي $err
, ويتم تقييم الجانب الأيمن من المهمة في سياق العددية.
الثنائية ",
"هو مشغل الفاصلة. في سياق العددية ، يقوم بتقييم الوسيطة اليسرى في سياق الفراغ ، ويلقي تلك القيمة بعيدًا ، ثم يقوم بتقييم الوسيطة الصحيحة في سياق العددية ويعيد تلك القيمة.
تقييم متغير أو ثابت ورمي هذه القيمة بعيدا عديمة الفائدة. ويحذرك بيرل من هذا.
لمعلوماتك: مشكلة أخرى ممكنة مع الكود الخاص بك:
my $err = $soap_response->code, " ", $soap_response->string, "\n";
المهمة لها أسبقية أعلى بحيث هي:
(my $err = $soap_response->code), " ", $soap_response->string, "\n";
نرى مشغلي بيرل والأسبقية و ال مشغل فاصلة للمزيد من المعلومات.
نصائح أخرى
أعتقد أنك أردت ربط أجزاء السلسلة لتكوين رسالة الخطأ بأكملها، لذلك سيتعين عليك استخدام النقطة بدلاً من الفاصلة:
my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join(' ', $soap_response->code, $soap_response->string) . "\n";
أو ، IMO أفضل:
return sprintf "%s %s\n", $soap_response->code, $soap_response->string;
نرى perldoc -f الانضمام و Perldoc -f Sprintf بيرلوك بيرلوب.
بخصوص التحذير ، انظر بيرلوك بيرلوب و هذه الملاحظة على مشغل الفاصلة.