讀取和寫入檔案

在讀取和寫入文字檔案之前,你應該知道要使用的編碼。有關編碼的更多詳細資訊,請參閱 Perl Unicode 文件 。這裡我們將 UTF-8 的設定顯示為函式 open 的預設編碼和解碼。這是通過使用程式碼頂部附近的 open pragma 完成的(在 use strict;use warnings; 之後是合適的):

use strict;
use warnings;
use open qw( :encoding(UTF-8) :std ); 

open 函式建立一個檔案控制代碼,用於讀取和/或寫入檔案。open 功能具有簽名

open(FILEHANDLE, MODE, FILEPATH) 並在操作失敗時返回 false 值。然後將錯誤描述儲存到 $!

#!/usr/bin/perl
use strict;
use warnings;
use open qw( :encoding(UTF-8) :std ); # Make UTF-8 default encoding

my $file_path = "/path/to/file";
open(my $file_handle, '<', $file_path) or die "Could not open file! $!";

while(my $row = <$file_handle>) {
    print chomp($row), "\n";
}

close $file_handle 
      or warn "Close failed!";

寫作

#!/usr/bin/perl
use strict;
use warnings;
use open qw( :encoding(UTF-8) :std ); # Make UTF-8 default encoding

my $file_path = "/path/to/file";
open(my $file_handle, '>', $file_path) or die "Could not open file! $!";

print $file_handle "Writing to a file";

close $file_handle 
      or warn "Close failed!";

閱讀大塊

開啟和閱讀大檔案可能需要一些時間和資源。如果只需要一小部分內容,那麼使用具有簽名的 read 函式讀取塊中的內容可能是個好主意

read(FILEHANDLE, SCALAR, LENGTH, OFFSET)

FILEHANDLE 必須是一個開啟的檔案控制代碼,SCALAR 將在操作後儲存讀取資料。LENGTH 指定從 OFFSET 開始讀取的字元數。該函式返回讀取的字元數,如果到達檔案末尾則返回 0,如果發生錯誤則返回 undef

read($file_handle, $data, 16, 0); 

從檔案開頭讀取 16 個字元到 $data