; # Get input again
chop $a; #
Chop off newline again
}
จากตัวอย่างข้างต้นชุดคำสั่ง
ระหว่างเครื่องหมาย
{ และ }
จะถูกกระทำ
ในขณะที่ข้อมูลที่ได้รับ
ไม่ตรงกับ password
จากตัวอย่างข้างต้น
สำหรับชุดคำสั่งวนรอบ
while
ไม่น่าจะเข้าใจยากนัก
มีอีกจุดที่น่าสังเกต
คือเมื่อมีการป้อน
password ตัวแปร $a
จะมีข้อมูลและข้อมูลนั้น
ก็จะมีสัญญลักษณ์ขึ้นบรรทัดใหม่
(new line)
ต่อท้ายมาด้วย
function chop
จะนำตัวอักขระตัวท้ายสุดออกจาก
string
ซึ่งในที่นี้ก็คือ
สัญลักษณ์ขึ้นบรรทัดใหม่
นั่นเอง
จากโปรแกรมตัวอย่างข้างต้น
สามารถเขียนขึ้นใหม่
โดยใช้รูปแบบของ
do .. while
ได้ดังต่อไปนี้
#!/usr/local/bin/perl
do
{
"Password : "; #
Ask for input
$a =
; # Get input
chop $a; #
Chop off newline
}
while ($a ne "mysecretpassword") # Redo while wrong password
for และ foreach
มีรูปแบบ
การใช้งานดังต่อไปนี้
- for loop
- for (Expression1; Expression2; Expression3) { Block }
- Expression1
เป็นค่าเริ่มต้น
ของการวนรอบ
- Expression2
ใช้สำหรับตรวจสอบ
ว่าจะวนรอบต่อ
หรือว่าหยุดการวนรอบ
- Expression3
ใช้สำหรับปรับปรุง
(update)
ตัวแปรที่ใช้ตรวจสอบการวนรอบ
- อันดับแรกจะเริ่มกระทำ
Expression1 ก่อน
เพื่อกำหนดค่าเริ่มต้น
ของการวนรอบ
- หลังจากนั้นจะตรวจสอบ
Expression2
หากว่าเงื่อนไข
เป็นจริงจะกระทำชุดคำสั่งใน
{ Block }
- เมื่อเสร็จสิ้นการทำงานชุดคำสั่งใน
{ Block }
แล้วก็จะมากระทำ
Expression3
- หลังจากนั้นจะ
วนไปขั้นตอนตรวจสอบ
Expression2
อีกครั้ง
ทำอย่างนี้ไปจนกระทั่ง
Expression2
เป็นเท็จ
- foreach loop
- foreach VARIABLE (ARRAY) { Block }
- ARRAY
เป็นตัวกำหนดการวนรอบ
ว่าจะวนกี่รอบขึ้นอยู่กับ
จำนวนข้อมูลในตัวแปร
Array
- VARIABLE
เป็นตัวแปร
ที่จะรับข้อมูลจาก
ARRAY
ตัวปัจจุบันที่ดัชนี
ตรงกับรอบที่วนทำงานอยู่
- ถ้าหากว่าไม่กำหนด
VARIABLE
จะถือว่าเป็นการเรียกใช้ตัวแปร
$_
ต่อไปนี้คือตัวอย่าง
สำหรับการวนรอบ
เพื่อแสดงตัวเลข
0 ถึง 9 โดยใช้
loop แบบ for
for ($i = 0; $i < 10; ++$i)
{
print "$i\n";
}
การวนรอบเพื่อทำงาน
ตามชุดข้อมูลใน
Array
หรือข้อมูลโครงสร้างแบบ
list อื่นๆ (เช่น
ตามแต่ละบรรทัด
ของแฟ้มข้อมูล)
ในภาษา Perl
ใช้คำสั่งวนรอบแบบ
foreach
ดังตัวอย่างต่อไปนี้
foreach $book (@title)
{
print "$book\n"; # Print the
item
}
ในการวนรอบแรก
ข้อมูลใน $book
จะถูกกำหนดค่า
ให้เท่ากับข้อมูลชุดแรกใน
array @title
ในการวนรอบครั้งต่อไป
ก็จะมีค่าเท่ากับ
ข้อมูลชุดที่สองใน
array
อย่างนี้ไปเรื่อยๆ
จนกระทั่งหมดชุดข้อมูลใน
array ถ้าหากว่า
@title เป็น array ว่าง
ชุดคำสั่งในเครื่องหมาย
{ .. }
จะไม่ถูกกระทำ
เนื้อหาส่วนถัดไป..
->