读取和写入文件

在读取和写入文本文件之前,你应该知道要使用的编码。有关编码的更多详细信息,请参阅 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