أهلاً أخوي سردادر ... وهذه إجابتي أتمنى لك التوفيق
لافرق بين cgi و pl و للعلم مترجم البيرل أصلاً لايطلب أي إمتداد لملف البيرل ولكن جرت العادة على pl و cgi و الله أعلم .
السطر الأول : هو مهم لأنه يخبر برنامج البيرل عن مكان وجود مترجم البيرل .
السطر الثاني : يقوم بقرائة المعلومات المرسلة إلى البرنامج عن طريق أسلوب POST ووضعها في المتغير $temp و المتغير الأخير يخبر الدالة read عن طول المعلومات المرسلة .
السطر الثالث : كما هو معلوم أنه لو كان لديك حقلين في نموذج قمت بإنشائة بواسطة الـ HTML الأول بإسم Name و الثاني بإسم Email فسوف يتم إرسال المعلومات بالشكل التالي :
Name=Mazen&Email=maz7@dr.com
ففي السطر الثالث نقوم بفصل كل حقل ووضعه في المصفوفه بحيث تصبح المصفوفة على الشكل التالي :
------- العنصر الأول : Name = Mazen
------- العنصر الثاني : Email = maz7@dr.com
حيث أن الدالة split وهي على الشكل التالي :
split /PATTREN/,$ver
تقوم بفصل كل مافي المتغير $ver حسب الباترين الموجود .
قد يكون هذا السطر صعب شرحة قليلاً لأنه لكن عند التعمق في البيرل سوف يكون سهل جداً .
foreach $item(@pairs) : هذا السطر يأخذ كل عنصر من المصفوفه pairs ويضعه في المتغير item .
($key,$content)=split(/=/,$item,2) : هذا السطر يقوم بنفس عمل السطر قبل السابق .
$content=~tr/+/ /; : هذا السطر يقوم يتحويل كل علامة + إلى مسافة حيث أنه عند طلب فورم عن طريق HTML يتيم تحويل المعلومات ( حاول أن تراجع أي موضوع يتحدث عن الفورم )
$content=~s/%(..)/pack("c",hex($1))/ge : يقوم بتحويل المعلومات المرسلة من المقابل الست عشري إلى الحرف الصحيح .
$fields{$key}=$content; : هذا السطر يقوم بصنع هاش ( وهو أحد أنواع المصفوفات أو المتغيرات يمكن تشبيهها بقاعدة بيانات يمكن الوصول لمحتوياتها عن طريق الإسم ) .
print "Content-type: text/html\n\n"; : يرسل إلى المتصفح معلومات أن النص المرسل هو نص HTML >
السطور التالية : عبارة عن طباعة لوسوم HTML .
print "$fields{fname} $fields{lname}</BR> : هذا السطر يقوم بإستدعاء أحد عناصر الهاش التي تم صنعها من قبل .
أخيراً إعذرني إن كان الشرح غير مفهوم ( أنا عارف إنه غير مفهوم

) لكن لو فيه سطر مافهته أسأل و إنشاء الله ماراح أتأخر .
والله يوفق الجميع .
وكل عام و أنتم بخير .