บทเรียนภาษา Perl

 

บทที่ 10 : การจัดการแฟ้มข้อมูล

 

ต่อไปนี้คือตัวอย่าง ของโปรแกรมภาษา Perl ที่ใช้สำหรับ เปิดแฟ้มข้อมูลมาแสดงผล แบบง่ายๆ ลักษณะการทำงาน จะคล้ายๆกับคำสั่ง cat ในระบบ Unix

#!/usr/local/bin/perl
#
# Program open the file, read it in,
# print it and close it :)

$file = '/tmp/test.txt';      # Name the file
open(INFO,$file);      # Open the file
@lines = <INFO>;      # Read it into an array
close(INFO);      # Close the file
print @lines;      # Print the array

 

เราใช้ function open สำหรับการเปิดแฟ้มข้อมูล เพื่ออ่านข้อมูล ใน function open ตัว parameter ตัวแรกคือ filehandle ซึ่งใช้ในการอ้างอิง ในการติดต่อกับแฟ้มข้อมูล ในภาษา Perl ส่วน parameter ตัวที่สองคือ expression ที่บอกถึง ชื่อแฟ้มข้อมูลที่ต้องการติดต่อ ถ้าหากระบ ุชื่อแฟ้มข้อมูล ไว้ภายใต้เครื่องหมาย quote '...' จะหมายถึงการอ้างอิง แฟ้มข้อมูลชื่อนั้นๆ โดยตรง ไม่สามารถใช้รูปแบบ การอ้างอิงที่ใช้ใน shell ได้ (เช่น ~ เพื่ออ้างอิงถึง home dir ของ user) ดังนั้นหากระบุ ชื่อแฟ้มข้อมูลว่า '~/data/mydata' จะทำให้ เกิดข้อผิดพลาดขึ้น ไม่สามารถประมวลผลได้ หากว่าต้องการที่จะใช้ รูปแบบการอ้างอิง ที่ใช้ใน shell จะต้องระบุ ชื่อแฟ้มข้อมูลไว้ภายใน เครื่องหมายวงเล็บ มากกว่าและน้อยกว่า <..> เช่น <~/data/mydata> แทน

ส่วน function close จะใช้สำหรับบอก โปรแกรมภาษา Perl ว่าต้องการที่จะ ปิดการติดต่อกับแฟ้มข้อมูล

นอกจากนี้ในการ เปิดใช้งานแฟ้มข้อมูล ยังสามารถจะกำหนด mode ในการเปิดได้อีกด้วย เช่นการเปิดแฟ้มข้อมูล เพื่ออ่านข้อมูล การเปิดแฟ้มข้อมูล เพื่อเขียนแฟ้มข้อมูลใหม่ (ทับของเก่า) การเปิดแฟ้มข้อมูล เพื่อเขียนข้อมูลเพิ่มเติม (ต่อท้ายของเก่า) โดยระบุเครื่องหมายพิเศษ นำหน้าชื่อแฟ้มข้อมูล ที่ต้องการจะเปิด โดยเครื่องหมาย > จะใช้สำหรับการเปิดแฟ้มข้อมูล เพื่อเขียนแฟ้มข้อมูลใหม่ (ทับของเก่า) เครื่องหมาย >> จะใช้สำหรับการเปิดแฟ้มข้อมูล เพื่อเขียนข้อมูลเพิ่มเติม (ต่อท้ายของเก่า) ดูตัวอย่างต่อไปนี้

 

open(INFO, $file);      # Open for input
open(INFO,">$file");      # Open for output
open(INFO,">>$file");      # Open for appending
open(INFO,"<$file");      # Also open for input

 

ถ้าต้องการที่จะเขียนข้อมูลอะไร บางอย่างลงในแฟ้มข้อมูล ที่ถูกเปิดไว้สำหรับ การเขียนข้อมูลแล้วนั้น สามารถทำได้โดยใช้คำสั่ง print โดยใช้ parameter พิเศษ โดยระบุ file handle ที่ถูกเปิดไว้แล้ว ไว้หน้าข้อมูลที่ต้องการ จะเขียนลงแฟ้มข้อมูล ตัวอย่าง ถ้าต้องการที่จะเก็บข้อความ ไว้ในแฟ้มข้อมูลที่มี file handle ว่า INFO จะใช้คำสั่งว่า

print INFO "Test with test data.. Test write to file..\n";

หากต้องการ ที่จะติดต่อกับ standard input (เช่น keyboard) และ standard output (เช่น จอภาพ) สามารถทำได้โดย ใช้คำสั่งดังต่อไปนี้

 

open(INFO,'-');      # Open standard input
open(INFO,'>-');      # Open standard output

 

จากโปรแกรมตัวอย่างข้างต้น ข้อมูลจะถูกเก็บไว้ในแฟ้มข้อมูล แฟ้มข้อมูลนี้จะถูกอ้างอิงโดย handle ที่ชื่อว่า INFO ถ้าหากว่า ต้องการอ่านข้อมูลจาก INFO ในภาษา Perl สามารถทำได้ โดยใช้เครื่องหมาย วงเล็บน้อยกว่า มากกว่า <...> ดังตัวอย่างคำสั่งต่อไปนี้

@lines = ;

 

จะอ่านข้อมูลจาก filehandle INFO เข้าสู่ตัวแปร array ชื่อว่า @lines ข้อควรจำ <INFO> จะอ่านข้อมูล จากแฟ้มข้อมูล ทีเดียวทั้งหมดรอบเดียว ทั้งนี้เพราะว่าเมื่ออ่าน มาแล้วจะนำมาเก็บ ไว้ในตัวแปรแบบ array ถ้าหากว่า เปลี่ยนตัวแปรแบบ array @lines เป็นตัวแปรแบบ scalar ชื่อว่า $lines เมื่อมีการอ่านข้อมูล จากแฟ้มข้อมูล ข้อมูลก็จะถูกอ่านเข้ามา เพียงบรรทัดเดียวเท่านั้น

 

<- - -  กลับหน้าหลัก