讀取和寫入檔案
在讀取和寫入文字檔案之前,你應該知道要使用的編碼。有關編碼的更多詳細資訊,請參閱 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
。