Perl เป็นภาษาประมวลผลข้อมูลข้อความที่ทรงพลังมาก
ใน Perl คุณสามารถใช้รูปแบบเพื่อกำหนดเทมเพลต จากนั้นใช้การเขียนเพื่อส่งออกข้อมูลตามเทมเพลตที่ระบุ
ไวยากรณ์การกำหนดการจัดรูปแบบ Perl เป็นดังนี้:
รูปแบบ FormatName =fieldlinevalue_one, value_two, value_threefieldlinevalue_one, value_two
การวิเคราะห์พารามิเตอร์:
FormatName : ชื่อที่จัดรูปแบบ
fieldline : บรรทัดรูปแบบที่ใช้ในการกำหนดรูปแบบของบรรทัดเอาต์พุต โดยมีอักขระเช่น @,^,,|
value_one, value_two... : เส้นข้อมูลที่ใช้เพื่อแทรกค่าลงในบรรทัดรูปแบบก่อนหน้า ล้วนเป็นตัวแปร Perl
. : สัญลักษณ์สิ้นสุด
ต่อไปนี้เป็นตัวอย่างการจัดรูปแบบอย่างง่าย:
ผลลัพธ์ที่ได้จากการดำเนินการตามตัวอย่างข้างต้นคือ:
อันดับแรก: googlesecond: coderctothird: taoba
บรรทัดรูปแบบขึ้นต้นด้วย @ หรือ ^ และไม่มีการทดแทนตัวแปรในบรรทัดเหล่านี้
ฟิลด์ @ (เพื่อไม่ให้สับสนกับสัญลักษณ์อาร์เรย์ @) เป็นฟิลด์ธรรมดา
ความยาวของ <, >,| หลัง @,^ จะกำหนดความยาวของฟิลด์ หากตัวแปรเกินความยาวที่กำหนด ตัวแปรนั้นจะถูกตัดทอน
<, >,| ยังแสดงถึงการจัดตำแหน่งด้านซ้าย การจัดตำแหน่งด้านขวา และการจัดตำแหน่งกึ่งกลางตามลำดับ
ช่อง ^ ใช้สำหรับการเติมบล็อกข้อความแบบหลายบรรทัด
รูปแบบของช่วงค่าดังแสดงในตารางต่อไปนี้:
รูปแบบ | ความหมายช่วงค่า |
---|---|
- | เอาต์พุตชิดซ้าย |
- | เอาต์พุตที่ถูกต้อง |
- | เอาต์พุตจัดกึ่งกลาง |
- | หมายเลขความแม่นยำคงที่ |
- | ข้อความหลายบรรทัด |
อักขระตัวแรกของแต่ละฟิลด์ค่าคืออักขระเติมบรรทัด เมื่อใช้อักขระ @ จะไม่มีการจัดรูปแบบข้อความ
ในตารางด้านบน ยกเว้นฟิลด์ค่าหลายบรรทัด @* ความกว้างของฟิลด์จะเท่ากับจำนวนอักขระที่ระบุ รวมทั้งอักขระ @ ด้วย ตัวอย่างเช่น:
-
หมายถึง ความกว้างเจ็ดอักขระ โดยสี่อักขระอยู่หน้าจุดทศนิยม และสองตัวอยู่หลังจุดทศนิยม
ตัวอย่างมีดังนี้:
ผลลัพธ์ที่ได้ของตัวอย่างข้างต้นคือ:
=================================== อาลี 20 2000.00============ ================================================== ========โคเดอร์คโต 30 2500.00================================================= = =====================จาฟเฟอร์ 40 4000.00======================== = =========
$~ ($FORMAT_NAME): ชื่อรูปแบบ $^ ($FORMAT_TOP_NAME): ชื่อรูปแบบส่วนหัวปัจจุบันถูกเก็บไว้ใน
$% ($FORMAT_PAGE_NUMBER): หมายเลขหน้าเอาต์พุตปัจจุบัน
$= ($FORMAT_LINES_PER_PAGE) : จำนวนบรรทัดในแต่ละหน้า
$|. ($FORMAT_AUTOFLUSH): จะรีเฟรชที่เก็บข้อมูลบัฟเฟอร์เอาต์พุตโดยอัตโนมัติหรือไม่
$^L ($FORMAT_FORMFEED): สตริงที่ต้องส่งออกก่อนส่วนหัวของแต่ละหน้า (ยกเว้นหน้าแรก) จะถูกเก็บไว้ใน
ต่อไปนี้เป็นตัวอย่างของการจัดรูปแบบอย่างง่ายโดยใช้ $~:
ผลลัพธ์ที่ได้จากการดำเนินการตามตัวอย่างข้างต้นคือ:
================================= ข้อความ # บทช่วยสอนการเขียนโค้ด============ = ================================================= ================================================= = === ข้อความ # บทช่วยสอนการเขียนโค้ด==================================
หากไม่ได้ระบุ $~ รูปแบบชื่อ STDOUT จะถูกส่งออก:
ผลลัพธ์ที่ได้จากการดำเนินการตามตัวอย่างข้างต้นคือ:
----------------รูปแบบ STDOUT----------------
ในตัวอย่างต่อไปนี้ เราสาธิตการใช้ตัวแปร $^ หรือ $FORMAT_TOP_NAME โดยการเพิ่มข้อมูลส่วนหัวของรายงาน:
ผลลัพธ์ที่ได้ของตัวอย่างข้างต้นคือ:
==================================== ชื่อ อายุ============= = ================================================= = =======อาลี 20 2000.00======================================= === ==============================Codercto 30 2500.00================================================= = =====================จาฟเฟอร์ 40 4000.00======================== = =========
นอกจากนี้เรายังสามารถใช้ $% หรือ $FORMAT_PAGE_NUMBER เพื่อตั้งค่าการแบ่งหน้าสำหรับรายงาน:
ผลลัพธ์ที่ได้ของตัวอย่างข้างต้นคือ:
=================================== ชื่อ อายุ หน้า 1=========== = ================================================= = =========อาลี 20 2000.00===================================== === ================================Codercto 30 2500.00================================================= = =====================จาฟเฟอร์ 40 4000.00======================== = =========
ตามค่าเริ่มต้น ฟังก์ชัน write จะส่งออกผลลัพธ์ไปยังไฟล์เอาต์พุตมาตรฐาน STDOUT แต่เรายังสามารถทำให้ผลลัพธ์ดังกล่าวส่งออกไปยังไฟล์อื่นได้ด้วย วิธีที่ง่ายที่สุดคือส่งตัวแปรไฟล์เป็นพารามิเตอร์ที่จะเขียน เช่น:
เขียน (MYFILE);
โค้ดด้านบนเขียนเอาต์พุตไปยังไฟล์ MYFILE โดยใช้รูปแบบการพิมพ์เริ่มต้นชื่อ MYFILE
แต่คุณไม่สามารถใช้ตัวแปร $~ เพื่อเปลี่ยนรูปแบบการพิมพ์ที่ใช้ได้ ตัวแปรระบบ $~ มีผลกับตัวแปรไฟล์เริ่มต้นเท่านั้น เราสามารถเปลี่ยนตัวแปรไฟล์เริ่มต้น เปลี่ยน $~ แล้วเรียกการเขียน
หลังจากดำเนินการสำเร็จแล้ว เราจะสามารถดูเนื้อหาของไฟล์ tmp ได้ดังต่อไปนี้:
$ cat tmp ================================= ใส่เข้าไปในไฟล์========== = ======================
เมื่อเราสามารถใช้ select เพื่อเปลี่ยนตัวแปรไฟล์ดีฟอลต์ มันจะส่งคืนการแสดงภายในของตัวแปรไฟล์ดีฟอลต์ปัจจุบัน เพื่อให้เราสามารถสร้างรูทีนย่อยและเอาต์พุตตามแนวคิดของเราเอง โดยไม่ส่งผลกระทบต่อส่วนอื่น ๆ ของโปรแกรม
หลังจากดำเนินการสำเร็จแล้ว เราจะสามารถดูเนื้อหาของไฟล์ tmp ได้ดังนี้:
$ cat tmp ================================= ใส่เข้าไปในไฟล์========== = ================================================= ================================================= = ===== อินพุตลงในไฟล์โดยใช้รูปแบบที่กำหนด ==================================