Perl 教程 之 Perl 文件操作 2

简介: Perl 文件操作

Perl 教程 之 Perl 文件操作 2

Perl 文件操作

Perl 使用一种叫做文件句柄类型的变量来操作文件。

从文件读取或者写入数据需要使用文件句柄。

文件句柄(file handle)是一个 I/O 连接的名称。

Perl 提供了三种文件句柄: STDIN,STDOUT,STDERR, 分别代表标准输入、标准输出和标准出错输出。

Perl 中打开文件可以使用以下方式:

open FILEHANDLE, EXPR
open FILEHANDLE

sysopen FILEHANDLE, FILENAME, MODE, PERMS
sysopen FILEHANDLE, FILENAME, MODE

参数说明:

FILEHANDLE:文件句柄,用于存放一个文件唯一标识符。
EXPR:文件名及文件访问类型组成的表达式。
MODE:文件访问类型。
PERMS:访问权限位(permission bits)。

open 函数

以下代码我们使用 open 函数以只读的方式 < 打开文件 file.txt:

open(DATA, "<file.txt");
< 表示只读方式。

代码中的 DATA 为文件句柄用于读取文件,以下实例将打开文件并将文件内容输出:

实例

!/usr/bin/perl

open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!";

while(){
print "$_";
}
以下代码以写入 >的方式打开文件 file.txt:

open(DATA, ">file.txt") or die "file.txt 文件无法打开, $!";

表示写入方式。

如果你需要以读写方式打开文件,可以在 > 或 < 字符前添加 + 号:

open(DATA, "+<file.txt"); or die "file.txt 文件无法打开, $!";
这种方式不会删除文件原来的内容,如果要删除,格式如下所示:

open DATA, "+>file.txt" or die "file.txt 文件无法打开, $!";
如果要向文件中追加数据,则在追加数据之前,只需要以追加方式打开文件即可:

open(DATA,">>file.txt") || die "file.txt 文件无法打开, $!";

表示向现有文件的尾部追加数据,如果需要读取要追加的文件内容可以添加 + 号:

open(DATA,"+>>file.txt") || die "file.txt 文件无法打开, $!";
下表列出了不同的访问模式:

模式 描述
< 或 r 只读方式打开,将文件指针指向文件头。

或 w 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。

或 a 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
+< 或 r+ 读写方式打开,将文件指针指向文件头。
+> 或 w+ 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
+>> 或 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

目录
相关文章
|
3月前
|
人工智能 供应链 数据可视化
一文读懂AI引擎与Together规则引擎重塑智能决策
从1950年图灵提出人工智能设想到如今AI引擎实现自主决策,Together规则引擎正成为智能决策核心。它通过动态规划、多工具调用与持续学习机制,赋能供应链、财务、定价等场景,提升决策透明度与效率。Together助力AI引擎突破落地瓶颈,推动企业管理迈向“决策即服务”新时代。
|
消息中间件 人工智能 供应链
go-zero 微服务实战系列(二、服务拆分)
go-zero 微服务实战系列(二、服务拆分)
|
3月前
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
391 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
2月前
|
存储 Prometheus 监控
136_生产监控:Prometheus集成 - 设置警报与指标选择与LLM部署监控最佳实践
在大语言模型(LLM)部署的生产环境中,有效的监控系统是确保服务稳定性、可靠性和性能的关键。随着LLM模型规模的不断扩大和应用场景的日益复杂,传统的监控手段已难以满足需求。Prometheus作为当前最流行的开源监控系统之一,凭借其强大的时序数据收集、查询和告警能力,已成为LLM部署监控的首选工具。
|
3月前
|
存储 网络协议 算法
ISIS协议详解
ISIS协议是一种链路状态路由协议,广泛用于大规模网络中。它最初基于OSI模型设计,后经扩展支持TCP/IP协议。ISIS通过SPF算法计算最短路径,使用NSAP地址进行设备寻址,具备灵活的区域划分和分层结构。协议通过L1、L2及L1/2路由器实现区域内部与骨干区域的通信,支持P2P和广播网络类型,具备邻接建立、LSDB同步、路由计算等核心机制,广泛应用于运营商和企业骨干网中。
|
9月前
|
测试技术 持续交付 开发者
Logic Error: 如何识别和修复逻辑错误
识别和修复逻辑错误是软件开发中的重要技能。通过理解程序需求、使用调试工具、打印日志和编写单元测试,可以有效地识别逻辑错误。修复逻辑错误时,需仔细阅读代码,回溯错误来源,并进行全面的重新测试。遵循最佳实践,如保持代码简洁、进行代码审查和使用持续集成,可以进一步减少逻辑错误的发生,提高代码质量。希望本文能帮助开发者更好地识别和修复逻辑错误,编写出高质量的软件。
760 16
|
Java Linux 网络安全
树莓派的开发环境搭建教程
本教程详细介绍如何在树莓派上搭建开发环境,包括系统安装、配置网络、设置开发工具等步骤,适合初学者快速上手。
|
消息中间件 监控 Java
【Kafka节点存活大揭秘】如何让Kafka集群时刻保持“心跳”?探索Broker、Producer和Consumer的生死关头!
【8月更文挑战第24天】在分布式系统如Apache Kafka中,确保节点的健康运行至关重要。Kafka通过Broker、Producer及Consumer间的交互实现这一目标。文章介绍Kafka如何监测节点活性,包括心跳机制、会话超时与故障转移策略。示例Java代码展示了Producer如何通过定期发送心跳维持与Broker的连接。合理配置这些机制能有效保障Kafka集群的稳定与高效运行。
529 2
|
机器学习/深度学习 数据采集 人工智能
【AI大模型】Transformers大模型库(十一):Trainer训练类
【AI大模型】Transformers大模型库(十一):Trainer训练类
615 0
|
存储 监控 测试技术
Kibana 的 Alert—Elastic Stack 实战手册
Kibana 的 Alert 模块主要用于 Elastic Stack 的监控告警。以一种相对较低的使用成本,将复杂的查询条件,编辑完成后监控不同的 Elastic Stack 的技术产品中产生的数据,最终把符合条件的告警信息以需要的方式反馈给用户。
5286 0
Kibana 的 Alert—Elastic Stack 实战手册