Chapter 5. ตัวแปร

            ในการเขียนโปรแกรมจำเป็นต้องมีการอ้างถึงข้อมูลที่ซ้ำกันบ่อยๆ ข้อมูลที่เป็นชนิดเดียวกันซ้ำๆ กันนี้ เราไม่นิยมสร้างหรือเขียนขึ้นมาใหม่ทุกครั้ง แต่เราจะประกาศมันเอาไว้ แล้วก็กำหนดค่าตัวแทน หรือที่เรียกว่าตัวแปร เมื่อมีการใช้ข้อมูลนี้อีกก็ให้เรียกตัวแปรนั้นขึ้นมาใช้ได้เลย ซึ่งเป็นการสร้างความสะดวกลดความซ้ำซ้อนของงาน เช่น

$name="passkorn";

เมื่อจะพิมพ์คำว่า passkorn ก็ให้เรียก $name ได้เลยไม่ต้องพิมพ์ passkorn อีก เช่น

print "$name";

            ตัวแปรในภาษา Perl มีไม่มากนั้น สามารถแยกออกได้เป็นตัวแปร 2 ตัวหลักๆ ดังนี้

  • Scalar
  • Array

          โดยมีรายละเอียดดังนี้

Scalar

              Scalar เป็นตัวแปรที่ใช้เก็บข้อมูลเดียวๆ อาจเป็นตัวเลข (Integer) หรือข้อความ (String) ก็ได้ วิธีการกำหนดเราจะใช้เครื่องหมาย $ นำหน้าเสมอ เช่น

$name= "passkorn";
$email= 'ccpasskn@hotmail.com';
$phone= 223102 ;

              เครื่องหมาย " "  และ ' ' จะให้ความหมายเหมือนกัน แต่การนำเข้าสู่การประมวลผลจะที่แตกต่างกัน คือถ้า Perl พบเครื่องหมาย " " จะนำเข้าสู่การประมวลผลเช่น การค้นหาคำที่แยกเป็นตัวอักษร (ณ.ที่นี่เราจะยังไม่เรียน) แต่ถ้าพบเครื่องหมาย ' ' Perl จะไม่สนใจ   ฉะนั้นถ้าตัวแปรที่มีความหมายไม่มาก ไม่ต้องการเก็บเพื่อนำเข้าสู่การประมวลผลภายหลัง ก็ควรใช้ ' ' เพื่อการประหยัด resource เครื่องจะได้เร็วขึ้นด้วย

             ข้อมูลที่เป็น Integer ไม่นิยมใช้เครื่องหมาย " " หรือ ' ' จะไม่ใส่เครื่องหมายใดๆเช่น

#!/usr/bin/perl
print "Content-type: text/html\n\n";

$phone1= "223102";
$phone2=  223100;

print "$phone1<br>\n";
print "$phone2<br>\n";

 

ผลลัพธ์ 

223102

223100

           ผลลัพธ์จะให้ความหมายเหมือนกันใช้ " " และ ' '

            ตัวแปร Scalar จะเก็บข้อมูลเพียงข้อมูลเดียวถ้าเรากำหนดตัวแปร Scalar ซ้ำกัน มันจะเก็บข้อมูลชุดสุดท้าย เช่น

#!/usr/bin/perl
print "Content-type: text/html\n\n";

$name= "passkorn";
$name= "somjai";

print "$name";

ผลลัพธ์ที่ได้

somjai

          จากผลลัพธ์ข้างต้น การเก็บข้อมูลที่ซ้ำกัน Scalar จะเก็บข้อมูลชุดสุดท้าย และแสดงผลออกมา   ดังนั้นควรระมัดระวังกำหนดและการใช้ตัวแปรด้วย หรือถ้าต้องการเก็บข้อมูลที่เป็นตัวแปรเดียวแต่ข้อมูลซ้ำกัน Perl ได้เตรียมตัวแปรให้สำหรับการเก็บข้อมูลเช่นนี้ ตัวแปรตัวนี้เราเรียก ว่า Array แล้วเราจะได้ศึกษาในตอนต่อไป

Array

ชุดของข้อมูล

          เป็นการเก็บข้อมูลเป็นชุด เป็นแถว หรือกลุ่มของข้อมูล เช่น เดือนก็ จะประกอบไปด้วย มกราคม กุมภาพันธ์ มีนาคม .... เป็นต้น  
          การเก็บข้อมูลในรูปแบบนี้ Perl จะใช้ เครื่องหมาย @ นำหน้า เช่น

@day  = ("Monday","Tuesday","Wednesday","Thursday"',"Friday","Saturday"',"Sunday");

         เมื่อต้องการให้แสดงข้อมูลก็สามารถทำได้โดยใช้คำสั่ง print เช่น

#!/usr/bin/perl
print "Content-type: text/html\n\n";

@day  = ("Monday","Tuesday","Wednesday","Thursday"',"Friday","Saturday"',"Sunday");

print "@day";

ผลลัพธ์

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

      ถ้าต้องการให้ print ข้อมูลออกมาทีละข้อมูลก็สามารถทำได้โดย แปลงเครื่องหมายจาก @ เป็น $ แล้วใช้เครื่องหมาย [0] เข้าไปอ้างถึงข้อมูลแต่ละตัว เลข 0 คือข้อมูลที่ 1 เลข 1 คือข้อมูลที่ 2 ต่อไปแบบนี้เรื่อยๆ เช่น

#!/usr/bin/perl
print "Content-type: text/html\n\n";

@day  = ("Monday","Tuesday","Wednesday","Thursday"',"Friday","Saturday"',"Sunday");

print "@day <p>";

print "$day[0]<br>\n"
print "$day[1]<br>\n"
print "$day[2]<br>\n"
print "$day[3]<br>\n"
print "$day[4]<br>\n"
print "$day[5]<br>\n"
print "$day[6]<br>\n"

ผลลัพธ์

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday

Associative Array

ชุดของข้อมูล เป็นคู่

          Associative Array เป็นการเก็บข้อมูลเป็นชุด ที่เป็นคู่ โดยกำหนดชุดของข้อมูลจับคู่กัน ตามลำดับ 0 คู่ 1 , 2 คู่ 3  , 4 คู่ 5    ดังนี้ passkorn 29 ,somchai 30, parinya 20
          การเก็บข้อมูลในรูปแบบนี้ Perl จะใช้ เครื่องหมาย % นำหน้า เช่น

% age = ("passkorn", 29 ,"somchai" 30 ,"parinya" , 20 );

         เมื่อเราต้องการให้ print คู่ของชุดข้อมูลออกมาเราก็สามารถทำได้โดยการอ้างข้อมูลตัวแรกของคู่ของชุดข้อมูล เช่น

#!/usr/bin/perl
print "Content-type: text/html\n\n";

% age = ("passkorn", 29 ,"somchai" 30 ,"parinya" , 20 );

print "$age{'passkorn'}<br>\n";
print "$age{'somchai'}<br>\n";
print "$age{'parinya'}<br>\n";

 

ผลลัพธ์

passkorn 29
somchai 30
parinya 20

 


Copy right Passkorn Roungrong