นั่นก็คือ Array แบบธรรมดา และ Hashes Array (หรือจะเรียกว่า Associative Array) ความแตกต่างของอะเรย์ทั้งสองแบบนี้คือ Hashes Array สามารถกำหนดคีย์ (key) ของอะเรย์ได้โดยตรง แต่ Array แบบธรรมดานั้นจะใช้ key แบบตัวเลขเท่านั้นไม่สามารถกำหนดคีย์ (key) เป็นข้อมูลชนิดสตริงได้
ในภาษา Perl นั้นการที่จะประกาศตัวแปรอะเรย์นั้นต้องประกาศ และเรียกใช้ให้ถูกวิธี ซึ่งการประกาศตัวแปรอะเรย์แบบธรรมดาจะมีความแตกต่างกับการประกาศตัวแปรอะเรย์แบบ Hashes (Associative array) โดยที่เวลาจะประกาศตัวแปรอะเรย์แบบธรรมดาต้องใช้สัญลักษณ์ @ เช่น @arr, @str เป็นต้น แต่ถ้าต้องการกำหนดข้อมูลให้กับสมาชิกแต่ละตำแหน่ง เราสามารถกำหนดโดยอ้างอิงตำแหน่งของข้อมูลที่ต้องการใส่ เช่น $arr[0] = "hello", $arr[1] = "world" เป็นต้น การประกาศตัวแปรอะเรย์ มีรูปแบบต่าง ๆ ดังนี้
#!/usr/bin/perl
@str_num = ("one", "two", "three");
# นั่นก็คือ $str_num[0] = "one", $str_num[1] = "two",# $str_num[2] = "three"
@array = ();
# ทำการประกาศตัวแปรอะเรย์โดยไม่ใส่สมาชิกใด ๆ
$array[0] = "one";
$array[1] = "two";
$array[2] = "three";
# มีค่าเหมือน @arrray = ("one", "two", "three");
print @str_num;
# ค่าที่ได้คือ onetwothree
print @array;
# ค่าที่ได้คือ onetwothree (จะเหมือนกับตัวแปร @str_num)
เมื่อเรามีสมาชิกในอะเรย์แล้ว เราสามารถเรียกดูค่าสมาชิกต่าง ๆ ในอะเรย์ เราสามารถแสดงค่าในอะเรย์ได้หลายวิธี ไม่ว่าจะเป็นการวนลูปแสดงสมาชิกในอะเรย์ การอ้างถึงตำแหน่งที่ต้องการโดยเฉพาะ และการแสดงผลสมาชิกอะเรย์ทุกตัว โดยใช้คำสั่ง print ดังนี้
#!/usr/bin/perl
# การแสดงผลสมาชิกอะเรย์แบบกำหนดตำแหน่ง index เฉพาะเจาะจง
print $array[0];
# แสดงผล one;print $array[2];
# แสดงผล three
# การแสดงผลสมาชิกอะเรย์ทุกตัว
print @array;
# แสดงผล onetwothree
# การวนลูปแสดงผลสมาชิกอะเรย์ สามารถทำได้หลายวิธี เช่น
for $line(@array) {
print $line . "\n";
}
# แสดงผล one
# two
# three
for ($i = 0; $i <= 1; $i++) {
print $array[$i] . "\n";
}
# แสดงผล one (เนื่องจากเป็นค่าของ $array[0])# two (เนื่องจากเป็นค่าของ $array[1])
for (0 .. 2) {
print $array[$_];
}
# แสดงผล one
# two
# three
# ทุกคนอาจจะสงสัยว่า $_ คืออะไรซึ่งเราจะเจอเจ้าตัวนี้ในบทความหน้านะครับ
ในการเรียกดูค่าตำแหน่ง (index) สุดท้ายของอะเรย์นั้นเราจะใช้คำสั่ง $#array ซึ่งในตัวอย่างที่แล้วตัวแปร @array นั้นจะมีสมาชิกทั้งหมด 3 ตัวซึ่งตำแหน่ง index สุดท้ายคือ 2 ดังนั้นผลที่ออกมาจากการใช้คำสั่ง $#array ก็คือ 2 ส่วนการที่เราต้องการลดจำนวนสมาชิกในอะเรย์นั้นเราก็สามารถใช้คำสั่ง $#array ได้เช่นกันนั่นคือ $#array = 1 จะเป็นตัวบอกว่าเราต้องการตัดตำแหน่งสมาชิกอะเรย์ตั้งแต่ตำแหน่งที่ 2 ออกไป ดังนั้นจะเหลือสมาชิกเพียง 2 ตัวคือ @array = ("one", "two") ดังตัวอย่าง
#!/usr/bin/perl
print $#array;
# จะแสดงผล 2
# เรายังสามารถใช้เป็นประโยชน์ในการวนลูปแสดงผลสมาชิกทั้งหมดได้อีกดังนี้
for ($i = 0; $i <= $#array; $i++) {
print $array[$i];
}
# จะแสดงผลสมาชิกทุกตัวออกมา
$#array = 1;
# เพราะฉะนั้นตอนนี้ตัวแปร @array = ("one", "two")
หลังจากที่ทราบวิธีการใช้งานตัวแปร Array แบบธรรมดาไปกันแล้ว คราวนี้เรามาดูการใช้งานตัวแปรแบบ Hashes กันดีกว่า ซึ่งข้อดีของตัวแปรอะเรย์ Hashes นั้นก็คือเราสามารถกำหนดคีย์ หรืออินเด็กซ์เป็นชนิดสตริงหรือข้อความแทนได้ แล้วการใช้งานที่แตกต่างก็คือตัวแปร Array Hashes จะประกาศโดยใช้สัญลักษณ์ % เช่น %array, %str_num เป็นต้น ส่วนการเข้าถึงสมาชิกในอะเรย์การเข้าถึงโดยใช้สัญลักษณ์ $array{"key"} เพื่อความเข้าใจง่าย ๆ เรามาลองดูตัวอย่างกันเลยดีกว่า ^^
#!/usr/bin/perl
%array = ("prefix" => "Mr", "name" => "Nontachai", "surname" => "Saptawepong");
# ซึ่งความหมายนั้นก็คือ $array{"prefix"} จะมีค่าเป็น Mr,
# $array{"name"} จะมีค่าเป็น Nontachai,
# $array{"surname"} จะมีค่าเป็น Saptawepong
print $array{"prefix"} . " " . $array{"name"} . " " . $array{"surname"};
# ค่าที่ได้คือ Mr Nontachai Saptawepong
# ในกรณีที่ต้องการ list key ทั้งหมดของตัวแปรอะเรย์ออกมาต้องใช้คำสั่งดังนี้
@keys_arr = keys %array;
# @keys_arr = ("prefix", "name", "surname");
เอาล่ะครับ คราวนี้ผมหวังว่าผู้ที่เริ่มต้นเขียนภาษา Perl คงจะพอมีแนวทางการใช้งานตัวแปร Array เพิ่มมากขึ้นนะครับ คือผมก็หวังว่าบทความนี้ของผมจะมีประโยชน์ไม่มากก็น้อยนะครับ มีอะไรติชมก็เขียนได้นะครับ
Login
Search