บทที่ 5 การจัดการไฟล์

    การจัดการเกี่ยวกับไฟล์ในภาษา 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 นี้กัน