ปรับปรุง : 2548-02-12 ()

บทเรียน Online : เพื่อเผยแพร่เนื้อหาทางวิชาการ หากพบส่วนหนึ่งส่วนใด ผิดพลาด [ช่วยแนะนำเราด้วย]
- ข้อควรทราบก่อนลงมือเขียน | เขียน perl ไปทำอะไร | โปรแกรมแรกที่ควรรู้เพื่อรับค่าจาก url และ form -

PERL-hypermart| Perl Script: cgi Resources, WebScripts Archive, Matt's Script Archive, ThaiDev
ข้อควรทราบก่อนลงมือเขียน
  1. เป็นสิ่งจำเป็นครับ ที่ท่าน ควรจะศึกษาภาษาอื่นให้เข้าใจมาก่อน แบบงู ๆ ปลา ๆ ก็ยังดี เช่นภาษาเบสิก หรือ pascal หรือ c ก็ยิ่งเยี่ยมไปเลยครับ เพราะภาษานี้ ต่างกับภาษาอื่นอยู่อย่างหนึ่งครับ คือไม่ใช้ภาษาพื้นฐานสำหรับศึกษาให้เข้าใจได้ง่าย ๆ แต่เป็นภาษาที่สนับสนุนการใช้งานเว็บของผู้เขียน homepage เป็นแล้วในระดับกลางถึงสูง จึงไม่เหมาะกับผู้เริ่มต้นเขียนภาษานี้ภาษาเป็นภาษาแรก หรือภาษาที่สองรองจาก html หากตั้งใจจะเขียนภาษานี้เป็นภาษาที่สองจริง ๆ ก็ไม่เป็นไรครับ เพราะผมทำบทเรียนพื้นฐานไว้ให้ศึกษาการเขียนโปรแกรมแบบมีโครงสร้างไว้ด้วยเช่นกัน
  2. ก่อนเริ่มศึกษา ต้องมี server ที่จะใช้ทดสอบ จากประสบการณ์ของผม มี 2 อย่างให้เลือก คือ ลงโปรแกรม web server ในเครื่อง PC ของตนเองที่มี perl compiler ในตัว เช่น WebSitepro ซึ่งทำให้ใช้ perl ในเครื่องโดยไม่ต้อง online ครับ และอีกวิธีคือ การขอ free homepage จาก hypermart.net ซึ่งตัวอย่างทั้งหมดของผมจะใช้งานได้ที่ hypermart นี้ทันที และผลที่ท่านเขียนจากการศึกษาจะใช้ทดลอง และจำไปใช้จริงได้ที่นี่ครับ
  3. บทเรียนทั้งหมดนี้ เน้นการเขียน perl เพื่อจัดการกับข้อมูล โดย รับคำสั่งผ่านเว็บ และให้ผลออกมาทางเว็บ หรือไปเพิ่ม ลบ แก้ไขข้อมูล ที่ถูกจัดเก็บไว้ใน web server
  4. ถ้าทิ้งการเขียนโปรแกรมไปนาน ควรทบทวนสักหน่อยว่า ภาษาคอมพิวเตอร์แบบมีโครงสร้าง (structure programming) จะมีหลักการ 3 หลักการ
    1. การทำงานของโปรแกรมแบบตามลำดับ (Sequence)
    2. การทำงานแบบเลือกตามเงื่อนไข (Decision)
    3. การทำงานแบบทำซ้ำ (Loop)
  5. ต้องมีเป้าหมายในการศึกษา เพราะภาษานี้จะถูกเขียนขึ้น เพื่อทำให้เป้าหมายบางอย่างสำเร็จ และแต่ละโปรแกรมที่ถูกเขียนขึ้น จะเขียนเพื่อให้ได้งานบางอย่างเสมอ และบทเรียนต่าง ๆ จะใช้วิธีการสอนแบบใช้ตัวอย่าง ไม่ได้ใช้วิธีการสอนตามทฤษฏี ทำให้การเรียน perl จะเข้าใจได้ ต้องอาศัยการฝึกปฏิบัติ อย่างจริงจังเท่านั้น
  6. ผู้เขียนบทเรียนนี้ มีความรู้ในระดับกลาง (Intermediate) ซึ่งข้อมูล และแหล่งความรู้ได้จากการอ่าน จากการศึกษาตัวอย่าง การลองผิดลองถูก และจากประสบการณ์ในการเขียนภาษาอื่นมาเทียบเคียง หากจุดใดมีปัญหา หรือผิดหลักการตามที่ผู้อ่านเข้าใจ ขอได้ mail มาบอกผมด้วย จะได้รีบแก้ไข เพื่อให้ผู้ศึกษาท่านอื่นได้รับสิ่งที่ถูกต้องไป และขอกำชับอีกครั้งว่า ผู้เขียนบทเรียนไม่ใช่ มือโปรโปรดอย่าส่ง mail มาลองภูมิ เพราะอะไรที่อยู่นอกเหนือบทเรียน ผู้เขียนไม่รู้ครับ สารภาพเลย .. แต่ถ้าอะไรที่ง่าย ๆ แต่ผู้เรียนคิดว่าเส้นผมบังภูเขา ผมก็ยินดีช่วยครับ
  7. ขอย้ำว่าจะไปบทต่อไปต้องทำสิ่งต่อไปนี้ ให้สำเร็จก่อน
    1. เขียน html จนชำนาญในระดับกลาง เช่น เขียนตาราง จนเข้าใจแล้ว
    2. ใช้โปรแกรม ftp เช่น wsftp หรือ cuteftp (ศึกษา บทเรียน wsftp ที่นี่)
    3. รู้จัก unix หรือรู้จักความหมายของ 755 หรือ 777 อย่างเข้าใจ
    4. ในหลาย web server ต้องเก็บ cgi ในห้อง cgi-bin หรือ cgi แต่ที่ hypermart เก็บโปรแกรม perl ที่ directory ใดก็ได้ ของให้กำหนด chmod เป็น 755 หรือประมาณนี้ก็สั่ง run ได้แล้ว และเท่าที่ผมทดสอบ ถ้าใช้ ws_ftp ส่งจะแปลงเป็น 755 ให้อัตโนมัติ และแต่เคยส่งเข้า thethai.com ซึ่งให้บริการ perl เหมือนกัน จะเป็น 644 ต้องใช้ ws_ftp แปลงเป็น 755 อีกครั้ง
    5. มี homepage ที่ hypermart.net หรือ ที่ใดที่ยอมให้ใช้ perl ได้
    6. ถ้าลงโปรแกรมที่ทำให้ pc ของตนเป็น web server ที่บริการ perl ได้ล่ะก็ .. เยี่ยม

เขียน perl ไปทำอะไร
    ไม่แปลกที่จะถามคำถามนี้ เพราะผมเองก็เคยถาม ก่อนที่จะได้มีโอกาส เข้ามาจับภาษานี้ เพื่อนำไปใช้งานต่าง ๆ ที่ต้องการ
  1. ทำ couter ส่วนตัวใช้เอง
  2. ทำ web board ส่วนตัวใช้เอง ถึงจะ copy มาแต่ก็ต้องปรับปรุงแก้ไขครับ
  3. ทำ banner แบบหมุนของผู้สนับสนุน
  4. ทำ เว็บจัดอันดับ ว่าเว็บใดถูกเรียกใช้บริการมากที่สุด
  5. ทำ search engine ซึ่งรวมถึงการรับลงทะเบียน url ใหม่ รับแก้ไข ลบ และเปลี่ยนแปลง
  6. ทำ สถิติ ซึ่งก็คือ counter แต่สามารถแสดง ip วัน เวลา
  7. ทำ ส่วนปรับปรุง homepage โดยไม่ต้อง upload หรือ download แต่ทำผ่านเว็บได้เลย
  8. ทำ บริการ redirection เหมือน come.to ผมทำแล้วครับใช้ภาษาไทยได้ด้วย
  9. ทำฐานข้อมูลได้ทุกชนิด ที่ไม่สนใจหน้าตาของรายงาน ซึ่งจุดด้อยอย่างหนึ่งของ perl ก็คือ การกำหนดหน้าตาที่ตายตัวไม่ได้ เพราะผู้ใช้ browser ทั่วโลกใช้ browser คนละ version คนละ font และคนละ site ซึ่งต่างกับการทำรายงานฐานข้อมูลด้วย vb หรือ access ที่ผมถนัด
  10. ทำเกมส์ง่าย ๆ เล่นยามว่าง
  11. ทำห้องสะสม เช่นภาพ โปรแกรม หรือเพลง เป็นต้น
  12. ทำ homepage ที่เปิดขึ้นมาทุกครั้ง มีหน้าตาไม่ซ้ำกัน
  13. และทำอะไรได้อีกมากที่ผมยังนึกไม่ออก ซึ่งแล้วแต่จินตนาการของผู้นำภาษานี้ไปใช้

ถ้าได้นั่งเขียนแล้ว สงสัยว่าบรรทัดแรกแก้ได้ไหม ผมขอตอบว่าแก้ได้
ซึ่งแล้วแต่ว่า perl compiler ถูกเก็บอยู่ห้องใด
สำหรับที่ hypermart.net แล้ว
#!/usr/local/bin/perl เก็บ Perl 5.003
#!/usr/bin/perl เก็บ Perl 4
ตัวอย่างและการทำงานจริงของผมทั้งหมดใช้ perl 5.003

โปรแกรมแรกที่ควรรู้เพื่อรับค่าจาก url และ form
ตัวอย่างการใช้ ถ้าโปรแกรมนี้ชื่อ x.pl
http://www.thaiall.com/x.pl?wow=123&hello=abc
ผลที่ได้จะได้คำว่า 123 และ abc บนจอภาพ ซึ่งเป็นค่าของตัวแปร wow และ ตัวแปร hello
    #!/usr/local/bin/perl &parse_form; print"Content-type:text/html\n\n"; print $config{'wow'},"<br>"; print $config{'hello'},"<br>"; sub parse_form { if ($ENV{'REQUEST_METHOD'} eq 'GET') { @pairs = split(/&/, $ENV{'QUERY_STRING'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); } foreach $pair (@pairs) { local($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $config{$name} = $value; } }
ผู้สนับสนุน + ผู้สนับสนุน
+ รับผู้สนับสนุน

แนะนำเว็บใหม่ : ผลการจัดอันดับ
รักลำปาง : thcity.com : korattown.com : topsiam.com : มหาวิทยาลัยโยนก
ศูนย์สอบ : รวมบทความ : ไอทีในชีวิตประจำวัน : ดาวน์โหลด : yourname@thaiall.com
ติดต่อ ทีมงาน ชาวลำปาง มีฝันเพื่อการศึกษา Tel.08-1992-7223