المشاركة الأصلية كتبت بواسطة ElSyad
اقتباس :
وعليكم السلام
انا حاولت اطبق العوامل الحسابية كبدآية بس دايما يديني غلط
حاولت بكذا طريقة اني اعدل بس مقدرتش اطلع بالناتج الصحيح
صورة للتطبيق بعد عدة محاولات واتمني اعرف اي الخطأ الي ف التطبيق
+
اني جربت اشيل السينجل كويتس الي بالمتغير $s ومنفعتش برضو
أهلا أخي
في البداية الخطأ الظاهر هو بسبب صيغة الprint المستعملة فهي بالشكل:
print data exp
أي لا وجود لل=, أعتقد أنك تقصد: print "$s";
لكن السكربت الذي وضعته أنت سينتج:
$b+$a كصيغة لأنك إستعملت الsingle quote عند تعريف المتغيير $c, لكن أيضا لو إستبدلتها بdouble quote سيتم طباعة الناتج:
5+2, لأن المترجم هنا إعتبر ال+ كأي حرف لا وظيفة له, لذلك يجب عليك عمل eval لل$c لينفذ الأمر في المترجم, وذلك بعدة طرق:
الأول إستعمال الeval مثال:
كود:
#!/usr/bin/perl
$a = 5;
$b = 2;
$c = "$a+$b";
print eval($c);
الناتج سيكون 7.
الثاني بعمل eval عند تعريف ال$c مثال:
كود:
#!/usr/bin/perl
$a = 5;
$b = 2;
$c = $a+$b;
print $c;
print "\n";
الناتج 7 أيضا.
الفارق بين المثال الثاني و تطبيقك, هو أن في المثال الثاني المترجم أعتبر ال+ صيغة جمع, أما في تطبيقك فهو إعتبرها حرف عادي.
أتمنى أن تكون الفكرة وصلت

.
بالتوفيق