บทเรียนภาษา Perl |
บทที่ 7 : การแปล การแทนที่ และการเปลี่ยน (Substitution and translation)
$data =~ s/bangkok/Bangkok/
และถ้าหาก ใช้กับตัวแปร $_ ก็สามารถเขียน expression ได้ดังนี้ s/bangkok/Bangkok/
อย่าลืมว่า regular expression ทั้งสอง (bangkok และ Bangkok) จะต้องอยู่ใน เครื่องหมาย / ผลลัพธ์ของ expression นี้ก็คือ ผลของการแทนที่ 0 คือ false และ 1 คือ true เพิ่มเติม
จากตัวอย่างข้างต้น จะมีการเปลี่ยนแปลง เฉพาะตัวอักษรแรก ของคำเท่านั้น ในบางครั้งเมื่อเราต้องการ ที่จะแทนที่ตัวอักษรมากกว่า 1 ตัว(เช่น 1 ย่อหน้า) สามารถทำได้โดยใช้ option g ระบุต่อท้าย / ตัวสุดท้ายเข้าไป ดังตัวอย่าง s/bangkok/Bangkok/g
s/[Bb][Aa][Nn][Gg][Kk][Oo][Kk]/Bagnkok/g
แต่มีอีกวิธีที่ง่ายกว่านั้น คือการใช้ option i (ignore case) ต่อท้าย expression เพื่อเป็นการระบุว่า ไม่ต้องสนใจความต่าง ระหว่างตัวเล็ก และตัวใหญ่ (case sensitive) ดังตัวอย่าง s/bangkok/Bangkok/gi
หมายเหตุ : option i สามารถใช้ได้กับ regular expression /../ อื่นๆได้ด้วยเช่นกัน การแปล (Translation)
การแปลสามารถ ทำได้โดยใช้ function tr ซึ่งสามารถใช้แปล แบบตัวอักษรต่อตัวอักษรได้ ตัวอย่างต่อไปนี้จะเป็น การแปลตัวอักษร a ด้วยตัวอักษร e ตัวอักษร b ด้วยตัวอักษร d และ ตัวอักษร c ด้วยตัวอักษร f ผลลัพธ์ของ expression คือจำนวน ของการแปลที่เกิดขึ้น $data =~ tr/abc/edf/
สัญลักษณ์พิเศษของ regular ส่วนมาก จะไม่สามารถใช้ได้กับ function tr เช่นตัวอย่างต่อไปนี้ จะเป็นการนับจำนวน เครื่องหมายดอกจัน ในตัวแปร $data และเก็บค่าที่นับ ได้ไว้ในตัวแปร $counter $counter = ($data =~ tr/*/*/);
อย่างไรก็ตาม เครื่องหมาย - (ขีดกลาง) ก็ยังใช้หมายถึง "ระหว่าง" อยู่เหมือนเดิม ตัวอย่างต่อไปนี้ จะเปลี่ยนข้อมูลในตัวแปร $_ ให้เป็นอักษรตัวตัวใหญ่ tr/a-z/A-Z/;
|