; # 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 ว่าง ชุดคำสั่งในเครื่องหมาย { .. } จะไม่ถูกกระทำ
เนื้อหาส่วนถัดไป.. ->