Perl 以其强大的文件处理能力著称,广泛用于文本处理和数据管理。本文将介绍Perl中文件的打开、读取、写入及相关操作。

目录

  1. 文件操作概述
  2. 打开与关闭文件
  3. 读取文件
  4. 写入文件
  5. 文件操作模式
  6. 文件测试与管理
  7. 参考资料

1. 文件操作概述

Perl 通过文件句柄(Filehandle)操作文件,支持:

  • 读取文本或二进制文件。
  • 写入或追加数据。
  • 文件状态检查与管理。

站内链接:了解基础语法,见 Perl 基础语法


2. 打开与关闭文件

打开文件

使用 open 函数:

use strict;
use warnings;

open(my $fh, '<', 'input.txt') or die "无法打开文件: $!";
print "文件已打开\n";
  • $fh:文件句柄(推荐使用标量)。
  • '<':读取模式。
  • die:错误处理。

关闭文件

close($fh) or warn "关闭文件失败: $!";

3. 读取文件

逐行读取

open(my $fh, '<', 'input.txt') or die "无法打开: $!";
while (my $line = <$fh>) {
    chomp($line);  # 移除换行符
    print "行内容:$line\n";
}
close($fh);

读取全部内容

  • 数组上下文:
open(my $fh, '<', 'input.txt') or die "无法打开: $!";
my @lines = <$fh>;
print "@lines";
close($fh);
  • 标量上下文(slurp模式):
open(my $fh, '<', 'input.txt') or die "无法打开: $!";
my $content = do { local $/; <$fh> };  # 取消行分隔符
print "$content";
close($fh);

4. 写入文件

覆盖写入

open(my $fh, '>', 'output.txt') or die "无法写入: $!";
print $fh "这是新内容\n";
close($fh);

追加写入

open(my $fh, '>>', 'output.txt') or die "无法追加: $!";
print $fh "追加一行\n";
close($fh);

使用 say(Perl 5.10+)

use feature 'say';
open(my $fh, '>', 'output.txt') or die "无法写入: $!";
say $fh "自动换行";
close($fh);

5. 文件操作模式

模式说明
<只读(默认)
>覆盖写入
>>追加写入
+<读写(从头开始)
+>读写(覆盖)
<:raw二进制读取

二进制模式

open(my $fh, '<:raw', 'binary.dat') or die "无法打开: $!";
my $buffer;
read($fh, $buffer, 1024);  # 读取1024字节
close($fh);

6. 文件测试与管理

文件测试运算符

检查文件状态:

my $file = 'input.txt';
if (-e $file) { print "文件存在\n"; }
if (-f $file) { print "是普通文件\n"; }
if (-r $file) { print "可读\n"; }

常见测试运算符:

  • -e:存在
  • -f:普通文件
  • -d:目录
  • -s:文件大小(字节)
  • -M:最后修改时间(天)

文件管理

  • 重命名:rename 'old.txt', 'new.txt';
  • 删除:unlink 'file.txt';
  • 创建目录:mkdir 'new_dir';
rename 'output.txt', 'backup.txt' or warn "重命名失败: $!";
my $size = -s 'backup.txt';
print "文件大小:$size 字节\n";

7. 参考资料

站内链接

出站链接

其他资源

  • 《Learning Perl》 – 文件操作章节。
  • X社区:搜索 #PerlFileIO 获取示例。

这篇指南详细介绍了Perl中文件操作的各种方法,从基本读写到文件管理一应俱全。如果需要更深入的内容(比如处理大文件或并发操作),请告诉我!