การเขียนโปรแกรมภาษา PERL สำหรับ Dynamic website

ปรับปรุง : 2552-03-03 (ปรับลิงค์ใหม่)


การเขียนภาษา PERL : แบบเรียงตามบทเรียน
ตรงไหนที่เห็นคำว่า /data1/hm/thaiwebsearch หรือ /data1/hm/thaiall.com
ให้เปลี่ยนเป็นคำว่า /home เพราะสมัยก่อน hypermart บังคับให้อ้าง home directory อย่างนั้น
แต่เดี๋ยวนี้ใน server ใหม่ของทุกที่แม้แต่ Linux Redhat ที่ผมศึกษาการทำ free hosting ก็ใช้วิธีอ้างถึง /home กันหมดแล้วครับ
เพราะอาจไม่ได้กลับไปแก้ไขทุกบทความก็ได้ แต่ในโปรแกรมทดสอบ และใช้งาน ถูกแก้หมดแล้ว .. จึงเรียนมาเพื่อทราบ

บทความต่าง ๆ ของผมรับค่าผ่าน
แต่ถ้า server ของท่านรับไม่ได้ให้เปลี่ยนเป็น $ENV{"QUERY_STRING"}
    ถ้าให้รับได้สมบูรณ์เลยต้องด้านล่างนี้ [ตัวอย่าง]
    print "Content-type: text/plainnn";
    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) {
      @v = split("=",$pair);
      $var[$v[0]] = $v[1];
    }
    print  $var["abc"],"
    "; print "<I><br><a href='?abc=123'>abc=123</a><br></I>";
    ข่าวเรื่องการใช้ perl hack ระบบ ผมจึงลอง code ด้านล่าง .. ในเครื่องผม
    #!c:perlbinperl.exe # alt-96 for ` print"Content-type:text/htmlnn"; $lct = localtime(time); print $lct; print "<pre><font face=fixedsys>"; $cmd =`type c:\autoexec.bat`; &printout; $cmd =`echo dir %WINDIR% > b.bat`; &printout; $cmd =`type b.bat`; &printout; $cmd =`b.bat`; &printout; $cmd =`dir`; &printout; # sub printout { @rec = split( "n", $cmd); foreach $r ( @rec) { print "$r n"; } print "<hr>"; }
    ปัดทศนิยมตำแหน่งที่ 3 ด้วย function
    #!c:/thaiabc/php/perl.exe # http://www.infocopter.com/perl_corner/round5.htm # http://www.perl.com/doc/FAQs/FAQ/oldfaq-html/Q4.13.html # Question from ธนากร ติยะวิสุทธิ์ศรี # 3.844999905 = 3.84 # 3.849999905 = 3.85 print "Content-type: text/plainnn"; print &round_amount(3.844999905) , "n"; print &round_amount(3.849999905) , "n"; sub round_amount { my $var = shift; $var = $var; # $frac = sprintf("%.2f", $var - int($var)); $frac = sprintf("%.2f", $var); return $frac; }

    บทเรียนทั้งหมดนี้ไม่ได้เน้นการสอนตามคำสั่ง แต่ใช้วิธีศึกษาจากตัวอย่าง และเห็นผลทันที
  1. ข้อควรทราบก่อนลงมือเขียน จำเป็นที่ผู้เริ่มต้นควรศึกษา
  2. เริ่มเขียนโปรแกรมพื้นฐาน รวมโปรแกรมง่าย ๆ เพื่อให้ท่านคุ้นเคยก่อน
  3. การรับค่าผ่าน URL เพื่อให้ท่านศึกษาวิธีการส่งค่า แบบแรก
  4. การรับค่าผ่าน FORM เพื่อให้ท่านศึกษาวิธีการส่งค่าใน แบบที่สอง
  5. การนำค่าจาก FORM เก็บลงแฟ้ม แสดงการประมวลผลกับแฟ้มแบบ txt
  6. การปรับปรุงแฟ้มด้วยเลขบรรทัด แสดงการประมวลผลที่สมบูรณ์ยิ่งขึ้น
  7. การเขียน chat board อย่างง่าย แสดงการ apply นำความรู้เบื้องต้นมาใช้อย่างง่าย ๆ
  8. การเขียน opinion board แสดงการเขียน webboard รับข้อมูลจากผู้ต้องการแสดงความเห็น
  9. การเขียน counter อย่างง่ายด้วยตัวอักษร แสดงการประมวลผลในหน้าเว็บ ทดลองได้เฉพาะ hypermart.net
  10. การเขียน counter อย่างง่ายด้วยภาพ แสดงการประมวลผลในหน้าเว็บแต่เป็นการเพิ่ม tag ที่ซับซ้อนขึ้น
  11. การเขียน Option เรียกเว็บมารวมกัน การเลือกข้อมูลมาแสดง โดย access มาจากแฟ้มแบบ txt ที่จัดระเบียบไว้
  12. การส่งค่าผ่าน Mail ด้วย Form ใช้ทำฟอร์ม ซื้อขาย หรือรับสมาชิก ได้ครับ (ถ้ามีปัญหา mail หาผมนะ)
  13. การทำ Shopping mall ด้วยระบบตะกร้า หยิบลงตะกร้า คำนวณเงิน และส่งรายการผ่าน mail
  14. การทำ Shopping cart ใช้ cookie หยิบลงตะกร้า คำนวณเงิน และส่งรายการผ่าน mail
  15. การทำ Demo e-commerce ช่วยให้ท่านเปิดร้านขายของได้ สมบูรณ์ในระดับหนึ่ง
  16. การเขียน Search engine อย่างง่าย พร้อม ฐานข้อมูลให้ download จะได้มี yahoo thailand เยอะ ๆ ไง
  17. การเขียน graph ในรูปแบบ GIF เป็นพื้นฐานให้ท่านนำไปเขียน counter, banner exchange หรือ online gif animation
  18. การทำชุดรวมlink+copyไปใช้ 3 วิธี แสดง source code และตัวอย่าง
  19. การทำชุดทดสอบ online แบบสุ่ม
  20. ทดสอบ และแก้ไข upload.pl # ทำให้ใช้แบบไม่มี user และ password
  21. Download Perl script
  22. การทำให้ Windows เป็น Web server และบริการ PERL
Web guides ::
General CGI Sites
http://www.scriptarchive.com/
CGI Programming 101
CGI Script Installation Tutorial
How to Use Your CGI-BIN
RSS of Perl

Perl:
Intro to Perl for CGI
Perl 101
The Perl You Need to Know
Perl Tutor
cs.cmu.edu

Python:
Python Tutorial
Writing CGI Programs in Python
Five Minutes to a Python CGI
General Server Side Includes sites
Big Nose Bird's Server Side Includes Page
Apache Week
Wdvl.com
Server Side Includes
CGI Programming: Chapter 5 Server Side Includes
SSI ที่เคยใช้ได้กับ hypermart.net ขณะนี้เขาบังคับให้นามสกุลเป็น .shtml จึงจะใช้ SSI ได้
New method of SSI : <!--#include virtual="/cgi/bottomx.pl"-->
Old method of SSI : <!--#exec cgi="/cgi/bottomx.pl"-->

Perl index #

  1. !~
  2. $!
  3. $""
  4. $#
  5. $$
  6. $%
  7. $&
  8. >$>
  9. $<
  10. >$
  11. $'
  12. $(
  13. $)
  14. $*
  15. $+
  16. $,
  17. $-
  18. $.
  19. $/
  20. $0
  21. $:
  22. $;
  23. $=
  24. $?
  25. $@
  26. $ARGV
  27. $ENV{expr}
  28. $SIG{expr}
  29. $[
  30. $
  31. $`
  32. $]
  33. $^
  34. $^D
  35. $^F
  36. $^I
  37. $^L
  38. $^P
  39. $^T
  40. $^W
  41. $^X
  42. $_
  43. $|
  44. $~
  45. %INC
  46. ><=>
  47. >
  48. ()
  49. (TYPE)
  50. **
  51. **=
  52. -x
  53. ..
  54. .=
  55. /pattern/
  56. =~
  57. ?PATTERN?
  58. ?pattern?
  59. @ARGV
  60. @inc
  61. A
  62. D
  63. H
  64. HOME
  65. L
  66. LOGDIR
  67. PATH
  68. PERLDB
  69. PERLLIB
  70. S
  71. T
  72. V
  73. a
  74. accept
  75. alarm
  76. atan
  77. b
  78. bind
  79. binmode
  80. c
  81. caller
  82. chdir
  83. chmod



  1. chop
  2. chown
  3. chroot
  4. close
  5. closedir
  6. cmp
  7. command
  8. connect
  9. continue
  10. cos
  11. crypt
  12. d
  13. dbmclose
  14. dbmopen
  15. defined
  16. delete
  17. die
  18. do
  19. dump
  20. each
  21. endhostent
  22. endprotoent
  23. endpwent
  24. eof
  25. eq
  26. eval
  27. exec
  28. exit
  29. exp
  30. f
  31. fcntl
  32. fileno
  33. flock
  34. for
  35. foreach
  36. fork
  37. ge
  38. getc
  39. getgrgid
  40. gethostbyaddr
  41. gethostbyname
  42. gethostent
  43. getlogin
  44. getpeername
  45. getpgrp
  46. getppid
  47. getpriority
  48. getprotobyname
  49. getprotobynumber
  50. getprotoent
  51. getpwent
  52. getpwnam
  53. getsockname
  54. getsockopt
  55. gmtime
  56. goto
  57. grep
  58. gt
  59. h
  60. hex
  61. if
  62. index
  63. int
  64. ioctl
  65. join
  66. keys
  67. kill
  68. l
  69. last
  70. le
  71. length
  72. link
  73. listen
  74. local
  75. localtime
  76. log
  77. lstat
  78. lt
  79. m
  80. mkdir
  81. msgctl
  82. msgget
  83. msgrcv



  1. msgsnd
  2. n
  3. ne
  4. next
  5. oct
  6. open
  7. opendir
  8. ord
  9. p
  10. pack
  11. pipe
  12. pop
  13. print
  14. printf
  15. push
  16. q
  17. q
  18. qx
  19. rand
  20. read
  21. readdir
  22. readlink
  23. recv
  24. redo
  25. rename
  26. require
  27. reset
  28. return
  29. reverse
  30. rewinddir
  31. rindex
  32. rmdir
  33. s
  34. s
  35. scalar
  36. seek
  37. seekdir
  38. select
  39. select
  40. semctl
  41. semget
  42. semop
  43. send
  44. sethostent
  45. setpgrp
  46. setpriority
  47. setprotoent
  48. setpwent
  49. setsockopt
  50. shift
  51. shmctl
  52. shmget
  53. shmread
  54. shutdown
  55. sin
  56. sleep
  57. socket
  58. socketpair
  59. sort
  60. splice
  61. split
  62. sprintf
  63. sqrt
  64. srand
  65. stat
  66. study
  67. substr
  68. symlink
  69. syscall
  70. sysread
  71. system
  72. syswrite
  73. t
  74. tell
  75. telldir
  76. time
  77. times
  78. tr
  79. truncate
  80. umask
  81. unary
  82. undef
  83. unlink



  1. unpack
  2. unshift
  3. utime
  4. values
  5. vec
  6. w
  7. wait
  8. waitpid
  9. wantarray
  10. warn
  11. while
  12. write
  13. x

 @ วิธีทำให้ใช้ Perl ใน PWS
    ขั้นตอนการทำให้ perl ใช้งานได้
  1. สร้างห้องชื่อ c:perlbin เพราะใน Omni properties : Web Server Global settings : External : .pl กำหนดห้องไว้
  2. perl.exe จาก perl.exe ? (456 KB)
  3. เมื่อได้แฟ้ม perl.exe ให้เก็บลงไปในห้อง c:perlbin
  4. ทดลองสร้างแฟ้ม test.pl แล้วเก็บลงไปในห้อง c:httpdhtdocs เมื่อทดสอบให้พิมพ์ว่า http://localhost/test.pl
    #!/usr/bin/perl print "Content-type: text/htmlnn"; print "
    Hello, World...n";
    foreach $key (keys(%ENV)) {
      print "$key = $ENV{$key}n";
    }
    
ตัวอย่างผลลัพธ์ ของ http://localhost/test.pl เมื่อทดสอบในเครื่องของผม
    Hello, World...
    SERVER_SOFTWARE = OmniHTTPd/2.10
    winbootdir = C:WINDOWS
    DOCUMENT_ROOT = C:HTTPDHTDOCS
    GATEWAY_INTERFACE = CGI/1.1
    PROMPT = $p$g
    CLASSPATH = C:EasyPhotoPhotoDeluxe 2.0AdobeConnectables
    REMOTE_ADDR = 127.0.0.1
    SERVER_PROTOCOL = HTTP/1.1
    REMOTE_HOST =
    REQUEST_METHOD = GET
    HTTP_REFERER =
    REMOTE_USER =
    COMSPEC = C:WINDOWSCOMMAND.COM
    HTTP_USER_AGENT = Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; Win 9x 4.90)
    QUERY_STRING =
    PATH = C:httpd;C:WINDOWS;C:WINDOWSCOMMAND;C:HTTPDPHP
    windir = C:WINDOWS
    HTTP_ACCEPT = */*
    TMP = C:WINDOWSTEMP
    HTTP_ACCEPT_LANGUAGE = th
    AUTH_TYPE =
    SCRIPT_NAME = /test.pl
    TEMP = C:WINDOWSTEMP
    SERVER_NAME = localhost
    PATH_INFO = /test.pl
    HTTP_COOKIE =
    SERVER_PORT = 80
    CONTENT_LENGTH = 0
    CONTENT_TYPE =
    PATH_TRANSLATED = C:HTTPDHTDOCStest.pl
    REMOTE_IDENT =
    
การเขียนโปรแกรมสำหรับ WAP Browser ด้วยภาษา Perl
#!/usr/bin/perl
&parse;
print "Content-type:text/vnd.wap.wml\n\n";
print "<?xml version=\"1.0\"?>\n";
print "<wml><card id=HTML title=Grade_Report>";
print "<pre>Get ID = ";
print $config{'id'};
print "</pre></card></wml>";
exit;
sub parse {
  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;
    $name =~ s/~!/~!/g; 
    $value =~ tr/+/ /;
    $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
    $value =~ s/~!/~!/g; 
    $value =~ s/<!--(.|\n)*-->//g;        
    $config{$name} = $value;
  }
}
ผู้สนับสนุน ยินดีรับ ผู้สนับสนุน เว็บไซต์ด้านการศึกษา
กลุ่มเว็บไซต์นี้ เริ่มพัฒนา พ.ศ.2542
โดยบุคลากรทางการศึกษาด้านคอมพิวเตอร์
โทร. 081-9927223 (ผมเป็นคนลำปางหนา)
ปล. ขอไม่รับ work at home / อาหารเสริม

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