การจัดการเกี่ยวกับไฟล์ในภาษา Perl เราจะใช้ฟังก์ชั่นคล้าย ๆ กับภาษา C นั่นคือ เราจะต้องมีการเปิดไฟล์ก่อนเป็นอันดับแรก และจะต้องระบุด้วยว่าเราเปิดไฟล์เพื่ออะไร จากนั้นเมื่อใช้งานไฟล์เสร็จแล้ว จึงทําการปิดไฟล์
การเปิดและปิดไฟล์
การเปิดไฟล์ เราจะใช้ฟังก์ชั่น open
ดังนี้
open( ตัวแปรไฟล์ , "พาธของชื่อไฟล์" );
ตัวแปรไฟล์เป็นตัวแปรที่ใช้อ้างถึงในการจัดการไฟล์ คุณต้องกําหนดตัวแปรนี้ขึ้นมาเอง (อะไรก็ได้) และการระบุวิธีการเปิดไฟล์ ในภาษา Perl จะระบุได้โดยใช้เครื่องหมายดังนี้
" " ไม่ระบุเครื่องหมายคือการเปิดไฟล์เพื่ออ่าน
">" หมายถึงการเขียนไฟล์ใหม่
">>" หมายถึงการเปิดไฟล์เพื่อเพื่มข้อมูลลงไปในไฟล์
ดังตัวอย่างต่อไปนี้ เป็นการเปิดไฟล์ hello.dat ทั้ง 3 แบบ
open( FILE ,
"hello.dat" );
เป็นการเปิดไฟล์ hello.dat แบบอ่านข้อมูลอย่างเดียว
open( FILE ,
">hello.dat" ):
เปิดไฟล์ hello.dat แบบเขียน ถ้ามีไฟล์เก่าอยู่แล้ว ข้อมูลเก่าก็จะหายไป
open( FILE ,
">>hello.dat" );
เปิดไฟล์ hello.dat แบบเพิ่มข้อมูลใหม่เข้าไป ข้อมูลเก่าจะยังอยู่ครบหมดไม่สูญหาย
เมื่อคุณเปิดไฟล์แล้ว คุณก็จะต้องปิดไฟล์ด้วยเมื่อใช้เสร็จ
ถ้าไม่ปิดคุณทราบหรือไม่ว่าจะเกิดอะไรขึ้น มันเหมือนกับการเปิดประตูแล้วไม่ยอมปิดนั่นล่ะครับ
(อ้าว... คนล่ะเครื่องเลย..) เพราะถ้าคุณไม่ปิดไฟล์ ข้อมูลก็จะไม่ถูกเซฟลงดิสก์
และสูญหายได้
การปิดไฟล์ใช้ฟังก์ชั่นง่าย ๆ คือฟังก์ชั่น
close ดังนี้
close( ตัวแปรไฟล์ );
ตัวอย่างเช่น
open( FILE ,
"hello.dat" );
..................ใช้งานไฟล์.............
close( FILE
);
การเขียนข้อมูลลงไฟล์
เมื่อคุณต้องการเขียนข้อมูลลงไฟล์ เราจะใช้ฟังก์ชั่น
print ครับ โดยเราจะต้องระบุตัวแปรไฟล์ลงไปด้วย โดยใช้รูปแบบดังนี้ครับ
print ตัวแปรไฟล์ "ข้อมูลที่ต้องการเขียนลงไฟล์";
ตัวอย่างเช่น ถ้าคุณต้องการเขียนคําว่า "Perl is easy for you" ก็ต้องเขียนดังนี้
open( FILE
, "hello.dat" );
print FILE
"Perl is easy for you";
close( FILE
);
จากข้างต้น ไฟล์ hello.dat จะถูกสร้างขึ้นใหม่ และเขียนข้อมูลลงไฟในไฟล์ว่า "perl is easy for you" ถ้าคุณต้องการให้เขียนข้อมูลลงไฟล์ โดยข้อมูลนี้มาจากตัวแปรล่ะก็ คุณก็สามารถทําได้เช่นกัน ดังโปรแกรมต่อไปนี้
$name = "Richard";
$age = "30";
open( FILE
, ">data.dat" );
print FILE
"name is $name , age is $age\n";
close( FILE
);
จากโปรแกรมในข้างต้น กําหนดตัวแปร $name และ $age จากนั้นเขียนลงไฟล์ data.dat โดยจะเห็นได้ว่าเป็นการเขียนแบบเพิ่มข้อมูลลงไฟล์ (>) ข้อมูลจะเพิ่มเข้าไปในไฟล์ ดังนี้
name is Richard , age is 30 <-- ตามด้วยขึ้นบรรทัดใหม่ "\n"
การอ่านข้อมูลจากไฟล์
ในการอ่านข้อมูลจากไฟล์ จะง่ายกว่าการเขียนข้อมูลลงไฟล์
เพียง 3 บรรทัด ข้อมูลก็อ่านจากไฟล์มาเก็บลงในตัวแปรได้แล้ว ดังนี้
open( FILE
, "data.dat" );
@buffer
= <FILE>;
close( FILE):
เห็นมั้ยครับ ข้อมูลจากไฟล์ data.dat
จะถูกอ่านมาเก็บไว้ในตัวแปรอะเรย์ชื่อ @buffer โดยเขียนโค๊ดโปรแกรมเพียง 3
บรรทัดจริง ๆ
คราวนี้เราจะมาทําความเข้าใจกับข้อมูลภายในไฟล์กันสักเล็กน้อย
โดยสมมติว่าในไฟล์ data.dat มีข้อมูลต่อไปนี้เก็บอยู่
this is a test 1
this is a test 2
this is a test 3
this is a test 4
this is a test 5
เมื่อเราอ่านไฟล์โดยใช้โค๊ดโปรแกรมดังที่ได้เสนอไปในข้างต้นนั้น ข้อมูลทั้ง 5 บรรทัดจะถูกอ่านและเก็บลงตัวแปรอะเรย์ @buffer โดยจะแยกเป็นทีละบรรทัด ๆ เลย นั่นคือ ช่องที่ 0 ของอะเรย์ buffer จะเก็บบรรทัด 1 ช่องที่ 1 ก็จะเก็บบรรทัด 2 ... ไปเรื่อย ๆ ดังนี้
$buffer[0] เก็บ
this is a test 1
$buffer[1] เก็บ
this is a test 2
$buffer[2] เก็บ
this is a test 3
$buffer[3] เก็บ
this is a test 4
$buffer[4] เก็บ
this is a test 5
อย่าลืมนะครับว่า
การเก็บข้อมูลของอะเรย์นั้นจะเริ่มต้นที่ช่อง 0 ครับ
เอาล่ะครับ เราได้รู้จักกาสรเขียนไฟล์กันไปแล้ว ให้กลับไปที่สารบัญและคลิกไปที่บทต่อไป เราจะมาศึกษาจากตัวอย่างโปรแกรม CGI เกี่ยวกับการเขียนไฟล์ ของโฮมเพจ DevMan นี้กัน