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