โปรแกรมแรกของคุณ
โปรแกรมต่อไปนี้ มีชื่อว่า Easy เพราะเป็นโปรแกรมเล็ก
ๆ ที่จะให้คุณทดลองเขียนเป็นโปรแกรมแรก ให้คุณใช้อิดิตเตอร์พิมพ์โปรแกรมดังต่อไปนี้และเซฟในชื่อ
easy.pl
print "Hello, user..\n";
print "Perl is easy for you\n";
อย่าลืม ถ้าคุณเขียน perl บน unix คุณจะต้องใส่ #!/usr/bin/perl
เอาไว้ต้นไฟล์ด้วย ผลการรันโปรแกรม easy.pl ให้คุณทําดังนี้
E:\> perl easy.pl
Hello, user..
Perl is easy for you
โปรแกรม Easy.pl เป็นโปรแกรมที่ใช้สำหรับแสดงข้อความ
โดยใช้ฟังก์ชั่น print รูปแบบของฟังก์ชั่น print ก็มีลักษณะดังที่แสดงในโปรแกรม
ให้คุณสังเกตการขึ้นบรรทัดใหม่ของข้อความ เราจะใช้รหัส "\n" เพื่อทำการขึ้นบรรทัดใหม่เหมือนกับภาษาซี
หากคุณไม่เคยศึกษาภาษาซีมาก่อน ให้คุณลองพิมพ์ตัวอย่างต่อไปนี้ เพื่อดูการทำงานของ
"\n"
print "Hello, user..";
print "Perl is easy for
you\n";
หรือ
print "\n\nHello, user..\n";
print "Perl is easy for
you\n\n";
ในตอนนี้ จากโปรแกรมที่เราได้ทดลองเขียนไปนั้น เราสามารถสรุปได้อย่างหนึ่งแล้ว่า
การเขียนภาษา Perl นั้น ทุกคำสั่งจะต้องลงท้ายด้วยเครื่องหมายเซมิโคลอน (
; ) ซึ่งจะเป็นตัวบอกถึงจุดสิ้นสุดของคำสั่งแต่ละคำสั่ง
ถึงแม้คุณจะนำทั้งสองบรรทัดมารวมอยู่ในบรรทัดเดียวกัน
โปรแกรมก็ยังสามารถทำงานได้ เพราคุณมีเครื่องหมาย ; คั่นระหว่างคำสั่งอยู่
ถ้าถ้าคุณไปเอามันออก คุณก็จะพบกับข้อความ Error ทันที
การเขียนคอมเมนต์ ( Comment )
ภาษา Perl มีวิธีการคอมเมนต์โดยการใช้เครื่องหมายชาร์ป
( # ) นำหน้าคำสั่งหรือข้อความที่ต้องการ สิ่งที่อยู่หลังเครื่องหมายนี้ ตัวแปลภาษาจะไม่กระทำ
เช่น
print "Hello, user..\n"; #
print "hello"
#print "Perl is easy for you\n";
จากตัวอย่างการคอมเมนต์ในข้างต้น ในบรรทัดแรกเป็นการคอมเมนต์ข้อความที่อยู่ทางด้านหลัง
และในบรรทัดที่สองเป็นการคอมเมนต์คำสั่งนั้นทั้งบรรทัด การคอมเมนต์ในภาษาซีสามารถใช้
/*
*/ เพื่อคอมเมนต์คำสั่งหลาย ๆ หรือหลาย ๆ บรรทัดได้ แต่สำหรับ Perl ไม่มีการคอมเมนต์แบบนี้
จะต้องใช้เครื่องหมาย # เพื่อคอมเมนน์ทีละบรรทัด ๆ
ชนิดของตัวแปร
มีการกำหนดตัวแปรเพียงไม่กี่ชนิดในภาษา Perl ซึ่งต่างจากภาษาชั้นสูงอื่น
ๆ Perl ได้กำหนดชนิดของตัวแปรเอาไว้ 2 ประเภทใหญ่ ๆ คือ
-
สเกลล่า ( Scalar )
-
อะเรย์ ( Array )
ตัวแปรแบบ Scalar
ตัวแปรแบบ Array
ตัวแปรแบบอะเรย์ เป็นการเก็บข้อมูลเป็นชุดหรือเป็นแถวเรียงต่อกัน..
การกำหนดตัวแปรแบบอะเรย์ในภาษา Perl คุณจะต้องใช้เครื่องหมาย @ นำหน้าชื่อของตัวแปรนั้น
เช่น
@array = ( "black" , "white"
, "yellow" , "green" );
จากข้างต้น อะเรย์นี้มีชื่อว่า array มีสมาชิกในอะเรย์
4 ตัวด้วยกัน ซึ่งเป็นข้อมูลแบบ String นั่นคือ black , white , yellow และ
green สมาชิกแต่ตัวตัวที่อยู่ในอะเรย์นั้น มีคุณสมบัติเป็นตัวแปรแบบ Scalar
เพราะฉะนั้น การอ้างถึงสมาชิกแต่ละตัวที่อยู่ในอะเรย์ เราจะต้องใช้เครื่องหมาย
$ และบอกตำแหน่งของสมาชิก ซึ่งจะเริ่มตั้งแต่ 0 , 1 , 2 และ 3 ไปเรื่อย ๆ
( เช่นเดียวกับภาษาซี )
เมื่อคุณต้องการแสดงข้อมูลที่อยู่ในอะเรย์ คุณสามารถทำได้โดยตรง
โดยใช้คำสั่ง print ดังโปรแกรม Array1.pl ต่อไปนี้
โปรแกรม ARRAY1.PL
@array = ( "black" , "white"
, "yellow" , "green" );
print "@array\n";
ผลการรันโปรแกรม
C:\> perl array.pl
black white yellow green
และถ้าหากคุณต้องการแสดงข้อมูลภายในอะเรย์ทีละตัว ๆ
คุณก็สามารถทำได้โดยให้คุณเพิ่มโค๊ดโปรแกรมต่อไปนี้เข้าไปใน Array1.pl และเซฟเป็น
Array2.pl
โปรแกรม ARRAY2.PL
@array = ( "black" , "white"
, "yellow" , "green" );
print "@array\n";
print "$array[0]\n";
print "$array[1]\n";
print "$array[2]\n";
print "$array[3]\n";
ผลการรันโปรแกรม
C:\> perl array2.pl
black white yellow green
black
white
yellow
green
ดังที่ได้อธิบายไว้ในข้างต้นเกี่ยวกับสมาชิกแต่ละตัวภายในอะเรย์
ซึ่งมีคุณสมบัติเป็นตัวแปรแบบ Scalar เพราะฉะนั้น ภายในอะเรย์หนึ่ง ๆ คุณสามารถเก็บข้อมูลที่เป็นตัวเลขหรือข้อความก็ได้
ดังนี้
@array = ( "black" , 20 , 'yellow'
, 100 );
Perl ไม่สนใจว่าสมาชิกภายในอะเรย์จะต้องเป็นตัวแปรประเภทเดียวกันทั้งหมด
เหมือนกับภาษาซีหรือปาสคาล โปรแกรม Array3.pl แก้ไขจากโปรแกรม Array2.pl แสดงตัวอย่างการเก็บสมาชิกคนละประเภท
โปรแกรม Array3.pl
@array = ( "black" , 20 , 'yellow'
, 100 );
print "@array\n";
print "$array[0]\n";
print "$array[1]\n";
print "$array[2]\n";
print "$array[3]\n";
ผลการรันโปรแกรม
C:\> perl array3.pl
black 20 yellow 100
black
20
yellow
100
ตัวแปรแบบ Associative Array
Associative Array เป็นอะเรย์อีกประเภทหนึ่ง ลักษณะของอะเรย์แบบนี้
จะเป็น "อะเรย์แบบจับคู่" นั่นคือ สมาชิกตัวที่ 0 จะคู่กับสมาชิกตัวที่ 1
, สมาชิกตัวที่ 2 จะคู่กับสมาชิกตัวที่ 3 การประกาศตัวแปรอะเรย์แบบนี้ เราจะใช้เครื่องหมาย
%นําหน้าตัวแปรนั้น เช่น
%age = ( "kwangd" , 27 , "kai" , 30 , "Bee" , 34
);
จากการประกาศตัวแปรในข้างต้น เมื่อเราอ้างถึงสมาชิกตัวแรกของอะเรย์
เราก็จะได้สมาชิกตัวที่ 1 เช่น
%age = ( "kwangd" , 27 , "kai"
, 30 , "bee" , 34 );
print " $age{'kwangd'}\n";
print " $age{'kai'}\n";
print " $age{'bee'}\n";
ผลการรันโปรแกรม
27
30
34
จะเห็นได้ว่า การอ้างถึงสมาชิกแต่ละตัวจะใช้เครื่องหมาย
$ นําหน้าสมาชิกแต่ละตัว ตัวแปรแบบ Associative Array นี้จะใช้ในการรับค่าและจัดการข้อมูลจากฟอร์มในการเขียนโปรแกรมด้วย
CGI
หลักการกำหนดชื่อให้กับตัวแปร
การกำหนดชื่อให้กับตัวแปรนั้น มีกฏเพียงไม่กี่ข้อ
ซึ่งถ้าคุณเคยผ่านการเขียนโปรแกรมมาก็สามารถทำความเข้าใจได้ง่าย ดังนี้..
1. ถ้าเป็นตัวแปรแบบ Scalar ให้ใช้เครื่องหมาย $ และถ้าเป็นตัวแปรแบบอะเรย์จะต้องใช้เครื่องหมาย
@ 2. อักษรที่ต่อจากเครื่องหมาย $ และ @ จะต้องเป็นตัวอักษรเท่านั้น 3. ไม่สามารถใช้สัญลักษณ์ใด
ๆ เป็นชื่อของตัวแปรได้ ตัวอย่างการกำหนดชื่อให้กับตัวแปรต่อไปนี้ ให้คุณลองดูว่าถูกต้องหรือไม่
.
( ถ้าคุณไม่แน่ใจ ให้คุณลองพิมพ์โปรแกรมและทดลองรันดู )
$name = "kwangd";
$_data = 231;
$m_address = "bkk";
$och! = "True";
$data_from_field_email = "[email protected]";
จะเห็นได้ว่า ตัวแปร $_data และ $och! นั้นไม่ถูกต้อง
เพราะตัวแปร $_data อักขระที่ต่อจากเครื่องหมาย $ นั้นจะต้องเป็นตัวอักษรเท่านั้น
และตัวแปร $och! มีเครื่องหมายตกใจ (!) รวมอยู่ด้วย
อีกอย่างหนึ่งที่เกี่ยวกับการกำหนดชื่อให้กับตัวแปรนั้น
ก็คือ เรื่องของตัวอักษรเล็กและอักษรใหญ่ Perl จะแยกระหว่างคำเดียวกันแต่ตัวอักษรไม่เหมือนกัน
นั่นคือ ตัวแปร $name จะเป็นคนละตัวกับ $Name ด้วยเหตุนี้ ในการเขียนโปรแกรมคุณจึงสามารถกำหนดตัวแปรได้มาก
แต่คุณก็จะต้องนึกถึงโอกาสต่อไปที่คุณจะกลับมาแก้ไขโปรแกรมด้วย เพราะคุณอาจสับสนกับการกำหนดตัวแปรของคุณเอง
การรับข้อมูลจากผู้ใช้ ( Standard
Input )
ในการรับข้อมูลทางคีย์บอร์ดจากผู้ใช้ในภาษา Perl
ไม่มีฟังก์ชั่น scanf() หรือ readln() เหมือนกับภาษาอื่น แต่จะใช้ <STDIN>
ซึ่งเป็น Standard Input สำหรับรับข้อมูลจากคีย์บอร์ด ให้คุณลองพิมพ์โปรแกรม
stdin1.pl ต่อไปนี้ และทดลองรันเพื่อดูผลการทำงาน
เมื่อคุณรันโปรแกรม คุณจะพบว่าเคอร์เซอร์จะกระพริบเพื่อรอรับการกด
ให้คุณพิมพ์อะไรก็ได้ลงไป จากนั้นโปรแกรมก็จะสิ้นสุดการทำงาน <STDIN> เป็นการรับข้อมูลจากคีย์บอร์ด
ถ้าคุณต้องการให้สิ่งที่คุณพิมพ์ลงไปเก็บไว้ที่ตัวแปร คุณจะต้องเขียนโค๊ดโปรแกรมดังนี้
เมื่อคุณต้องการแสดงค่าที่อยู่ในตัวแปร $a ออกทางจอภาพ
ให้คุณใช้คำสั่ง print
โปรแกรมต่อไปนี้เพิ่มเติมจากโปรแกรม stdin1 เป็นการรับชื่อจากผู้ใช้
เมื่อคุณพิมพ์ชื่อลงไป โปรแกรมจะบอกชื่อคุณกลับมา
โปรแกรม stdin2.pl
print "what is your name ? ,
";
$name = <STDIN>;
print "\nhello $name";
ลักษณะของ $name = <STDIN> ก็เหมือนกับการ readln(name)
ในภาษาปาสคาลหรือ scanf("%s",&name) ในภาษาซีนั่นเอง ให้คุณทดลองเขียนโปรแกรมและลองพลิกแพลงวิธีการอื่น
ๆ ดูเพื่อความชำนาญ
Perl และการคำนวณ
ลำดับของการคำนวณ
ลำดับการคำณวนของ Perl ก็เช่นเดียวกับการคำณวนโดยทั่วไป
ซึ่งในนิพจน์จะกระทำเครื่องหมายที่มีน้ำหนักมากกว่า เป็นอันดับแรก Perl มีโอเปอเรเตอร์อยู่
4 ตัว เพราะฉะนั้นในหนึ่งนิพจน์ การคำณวนจะเริ่มจากเครื่องหมาย คูณ , หาร
ก่อนเครื่องหมาย บวกและลบ ดังเช่นโปรแกรม think2.pl ต่อไปนี้
เมื่อคุณทำการรันโปรแกรม ค่าจะถูกกำหนดให้กับตัวแปร
$a, $b, $c และ $d ตามลำดับ จากนั้นตัวแปร $b จะคูณกับ $c ก่อนจึงจะบวกด้วย
$a และสิ้นสุดด้วยการหาร $d
ตัวอย่างต่อไปนี้ เป็นโปรแกรมคำณวนเลข ซึ่งจะรับค่ามาเก็บไว้ที่ตัวแปร
$num1 และ $num2 และโปรแกรมจะแสดงผลบวกของตัวแปร
โปรแกรม think3.pl
print "\nEnter num1 : ";
$num1 = <STDIN>;
print "\nEnter num2 : ";
$num2 = <STDIN>;
$answer = $num1 + $num2;
print "\nanswer is $answer";
ผลการรันโปรแกรม
C:\> perl think3.pl
Enter num1 : 12
Enter num2 : 3
answer is 15
จะเห็นได้ว่า โปรแกรม think3.pl แบ่งเป็น 3 ส่วนนั่นคือ
ส่วนรับข้อมูล , ส่วนคำณวน และส่วนของการแสดงผล ให้คุณทดลองแก้ไขโปรแกรม think3.pl
โดยใช้การลบ , การคูณและการหารดู เพื่อความเข้าใจมากยิ่งขึ้น