2. ตัวแปรและคำสั่งพื้นฐาน

คุณจะได้เรียนรู้

  1. การตั้งตัวแปรแบบต่างๆและการเรียกใช้ตัวแปร
  2. คำสั่งพื้นฐานต่างๆเช่น if-else / while / foreach / for
  3. การใช้เครื่องหมายสัญลักษณ์ เท่ากับ มากกว่า น้อยกว่า เงื่อนไข ฯลฯ
  4. การทำงานทางคณิตศาสตร์ขั้นพื้นฐาน (บวก-ลบ-คูณ-หาร)

ถ้าจะถามว่าอะไรคือตัวแปร มีไว้ทำไม ใช้อย่างไร ไม่ต้องถามผมหรอก เพราะกำลังจะทำให้ดูอยู่นี่แล้ว 1

ตัวอย่างการตั้งตัวแปรแบบที่ 1 และการใช้คำสั่ง if-else

print "content-type:text/html\n\n"; # บรรทัดนี้ต้องมีอยู่แล้ว ถ้าไม่รู้ว่ามีไว้ทำไมให้กลับไปอ่านบทที่ 1
$guest_name = "Suwat"; # ตั้งตัวแปรชื่อ guest_name มีค่าของตัวแปรนี้เท่ากับ Suwat
if ($guest_name eq "Suwat") {
# ใช้คำสั่ง if โดยบอกว่า ถ้า guest_name เท่ากับ Suwat (eq เท่ากับ =)
   print "Hello Suwat, how are you ?"; # ให้พิมพ์ออกมาว่า Hello Suwat, how are you ?
# xxx
else {
# ถ้าเป็นอย่างอื่นให้พิมพ์ว่า Sorry I don't know you, may I have your name ?
   print "Sorry I don't know you, may I have your name ?";
}


รู้หรือยังว่าตัวแปรมีไว้ทำไม ?
จากตัวอย่างข้างบนนี้เราได้ทำการตั้งตัวแปร และใช้คำสั่ง if-else บันทัดที่ตั้งตัวแปรคือ
$guest_name = "Suwat"; ถ้าคุณตั้งแบบนี้ $guest_name = 'Suwat'; ก็จะมีค่าเท่ากัน แต่ถ้าเปลี่ยน จาก Suwat ให้เป็น suwat จะไม่เท่ากันแล้วเพราะ perl จะมองตัวอักษรเล็กใหญ่มีค่าไม่เท่ากัน การตั้งตัวแปรก็ระวังด้วยนะครับถ้าเป็นตัวแปรที่มีค่า ของตัวแปรเป็นตัวอักษรต้องมีเครื่องหมาย '' หรือ "" ครอบค่าของตัวแปรอยู่ ดังตัวอย่าง แต่ถ้าค่าของตัวแปรเป็นตัวเลขเมื่อไร ไม่ต้องใช้เครื่องหมายครอบนะครับเช่น $guest_age = 82; เป็นต้น การตั้งตัวแปรข้างต้นสำหรับตัวแปรที่มีค่าของตัวแปรเพียงค่าเดียว ถ้าตัวแปรมีค่าเท่ากันสามารถตั้งได้ดังนี้ $apple = $orange = $durian = "fruit"; (ค่าของ 3 ตัวแปรนี้คือ fruit) หรือถ้ามีค่าของตัวแปรเป็นตัวเลขเช่น $a = $b = $c = $d = 10;

ต่อไปนี้เป็นตัวอย่างย่อยๆ ก่อนการอธิบาย การใช้ if-else ต่อไป


print "Content-type:text/html\n";
print "<html><body>\n";
$name = "Suwat";
#ตั้งตัวแปรตัวอักษร
print "My name is ";
#พิมพ์ออกที่ browser
print "$name"<br>;
#พิมพ์ค่าตัวแปรออกที่ browser พร้อมกับใส่ <br> ขึ้นบันทัดใหม่

$myage = 15;
#ตั้งตัวแปรตัวเลข
print "<br>My age is $myage";
#พิมพ์ออกที่ browser

print "</body></html>";


ต่อไปก็อธิบาย คำสั่ง if - else
$guest_name = "Suwat";
if ($guest_name eq "Suwat") {
   print "Hello Suwat, how are you ?";
}  # xxx
else {
   print "Sorry I don't know you, may I have your name ?";
}

ดูอีกครั้งนะครับจะได้แน่น ผมจับแยกสีไว้จะได้ดูง่ายๆ โครงสร้างของชุดคำสั่ง if-else จะเป็นสีน้ำเงิน ที่ขีดเส้นใต้จะเป็นเงื่อนไข เช่นอะไรเท่ากับ(== หรือ eq)หรือไม่เท่ากับ(!= หรือ ne)อะไร อะไรมากกว่า(> หรือ gt)หรือน้อยกว่า(< หรือ lt)อะไรเป็นต้น ส่วนสุดท้ายที่เป็นตัวเอียงคืองานที่ต้องทำเมื่อเงื่อนไขเป็นจริงหรือไม่เป็นจริง การใช้คำสั่ง if-else จะใช้แค่ if อย่างเดียวก็ได้ ถ้าเราไม่ต้องการให้เกิดงานอื่น จากตัวอย่าง จะใช้ดังนี้

$guest_name = "Suwat";
if ($guest_name eq "Suwat") {
   print "Hello Suwat, how are you ?";
}

หรือถ้าคุณต้องการให้มีหลายเงื่อนไขให้ใช้ elseif แทรกไปเช่น

$guest_name = "Suwat";
if ($guest_name eq "Suwat") {
   print "Hello Suwat, how are you ?";
} 
elseif ($guest_name eq "Wan") {
  
   print "Hello Wan, how are you ?";
}
elseif ($guest_name eq "Moo") {
  
   print "Hello Moo, how are you ?";
}
else {
   print "Sorry I don't know you, may I have your name ?";
}



ตัวอย่างการตั้งตัวแปรแบบที่ 2 และการใช้คำสั่ง foreach

การตั้งตัวแปรแบบที่ 2 นี้ใช้ในกรณีที่ 1 ตัวแปรมีหลายค่า ไม่ค่อยอยากบอกเท่าไรเลยว่าลักษณะแบบนี้ เขาเรียกว่า ตัวแปร array ส่วนแบบที่ผ่านมาเรียกว่า scalar มาดูตัวอย่างการตั้งตัวแปร array กันเลยนะครับ

@fruit = ("apple","durian","pineapple");

ตัวแปรที่ชื่อ fruit มีค่าอยู่ 3 ค่าคือ apple, durian, pineapple ชื่อของตัวแปรแบบนี้ต้องมี @ นำหน้าด้วยนะครับ การนำค่าของตัวแปรแบบนี้มาใช้ต้องทำอย่างไรดี ดูเลยแล้วกันครับ

@fruit = ("apple","durian","pineapple"); 
foreach $a (@fruit){
print "
$a<br>\n";
}

เอาละครับถึงเวลาแสดงฝีมือ copy code ข้างบนนี้ไปสร้างเป็นไฟล์ใหม่ที่สามารถส่งผลออกมาที่
หน้าจอบราวเซอร์ได้ ลองทำดูนะครับ ผลที่เกิดจาก code นี้จะได้ค่าของตัวแปรออกมา 3 บันทัด ซึ่งเป็นผลจากการทำงานของคำสั่ง foreach ดูจากตัวอย่างคุณคงใช้งานได้นะครับ ผมมีอีก 1 ตัวอย่างของตัวแปร Array ดังนี้ครับ

print "content-type:text/html\n\n";
@arraycolor = ( "red" , "blue" , "black" , "green" );
print "@arraycolor\n";
# พิมพ์ออกหน้าจอทั้งหมด
print "<hr>";
print "$arraycolor[0]\n";
# พิมพ์ออกหน้าจอทีละตัวแปร
print "$arraycolor[1]\n";
print "$arraycolor[2]\n";
print "$arraycolor[3]\n";


ลองสร้างเป็นไฟล์แล้วดูผลนะครับ คุณคงได้ปิ้งไอเดียแน่ๆ





ตัวอย่างการตั้งตัวแปรแบบที่ 3 ตัวแปรแบบจับคู่

print "content-type:text/html\n\n";
%distante = ( "Korat" , 120 , "Ayuttaya" , 50 , "Chiengmai" , 334 );
print " From Bangkok to Korat is $distante{'Korat'} kms.\n";
print " From Bangkok to Korat is $distante{'Ayuttaya'} kms.\n";
print " From Bangkok to Korat is $distante{'Chiengmai'} kms.\n";


ลองเรียกโปรแกรมนี้ดูแล้วจะอ๋อ code อยู่นี่ครับ





ตัวแปรระบบ
print "content-type:text/html\n\n";
$ip = $ENV{'REMOTE_ADDR'};
print "ENV{'REMOTE_ADDR = $ip<br><hr>";

foreach $key (keys(%ENV)) {
print "$key = $ENV{$key}<br>\n";
}


อย่างงนะครับ ถ้าเห็นผลจากโปรแกรมนี้ บางทีคุณจะรู้จักอะไรมากขึ้นจากโปรแกรมไม่กี่บันทัดนี้





การใช้คำสั่ง while

print "content-type:text/html\n\n";
$count = 1;
while ($count != 7){
print "<br><font size=\"$count\" color=\"red\">Hello My Perl</font>\n";
$count++;
}

ลองเรียกโปรแกรมนี้  แล้ว view source จากบราวเซอร์นะครับ เปรียบเทียบกับที่เห็นอยู่ด้านบนนี้ จะพบสิ่งเหลือเชื่อครับ อย่าลืมนับจำนวนบันทัดของ code นี้ กับ code ที่ได้จากบราวเซอร์ด้วยนะครับ


การใช้คำสั่ง for

print "content-type:text/html\n\n";
$My_name = "Suwat";
for ($count=1;$count<=10;$count++){
print "$My_name<br>\n";
}

อีกแล้วครับท่าน ทดลองโปรแกรมนี้เหมือนกับคำสั่ง for แล้วตรวจผลที่ได้ คุณจะพบสัจธรรม




การใช้เครื่องหมายสัญลักษณ์เงื่อนไข
จะเห็นว่าใน code ต่างๆด้านบนจะมีการใช้สัญลักษณ์เช่น eq เป็นต้น เรามาดูสัญลักษณ์อื่นๆที่ใช้ในการเขียน โปรแกรมภาษา Perl กัน ถ้าเจออีกจะได้ไม่งง $x และ $y ผมสมมุติให้เป็นตัวแปรนะครับ เวลาที่ใช้งานจริงๆ ต้องนำไปใช้ให้เหมาะกับตัวแปรด้วยนะครับ เช่น
if ($x == &y) {
... ใช้ในกรณีที่ทั้ง $x และ $y เป็นตัวแปรที่มีค่าเป็นตัวเลข แต่ถ้าเป็นตัวอักษรต้องแทน == ด้วย eq นะครับ แถมอีกนิด เงื่อนไขและ(and)ให้ใช้ && และเงื่อนไขหรือ(or)ให้ใช้ ||

  ถ้าเป็นตัวเลข ถ้าเป็นตัวอักษร
$x เท่ากัน $y $x == $y $x eq $y
$x ไม่เท่ากัน $y $x != $y $x ne $y
$x มากกว่า $y $x > $y $x gt $y
$x มากกว่าหรือเท่ากัน $y $x >= $y $x ge $y
$x น้อยกว่า $y $x < $y $x lt $y
$x น้อยกว่าหรือเท่ากัน $y $x <= $y $x le $y



การทำงานทางคณิตศาสตร์ (บวก-ลบ-คูณ-หาร)

$a = 2;
$b = 4;

$num1 = $a + $b; # บวกครับ
$num1 = 2 + 32; # บวกครับ
$num2 = $a * $b; #คูณกันเห็นๆ
$num2 = $a * 6; #คูณกันเห็นๆ
$num3 = $b / $a; #อีนี่หารจะจ๊ะนาย
$num3 = 10 / 5; #อีนี่หารจะจ๊ะนาย
$num4 = $b - $a; #จะอะไรถ้าไม่ใช่ลบ
$num4 = 100 - $a; #จะอะไรถ้าไม่ใช่ลบ
$answer = $num1 + $num2 + $num3 + $num4;
print "<br>คำตอบคือ $answer";



by thaitop.com


  © 2000, Integrated World Tech Co.,Ltd , All Rights Reserved. Thairegister is a service mark of In and Intergrated World Tech Co.,Ltd. Additional copyright and trademark information.