关于perl中文件操作句柄使用的几种方式-基础版

在perl中存在几种句柄使用的方式,其中open为最基础的使用方法,下面把我遇到的几种句柄的使用方法做一个小小的总结:

open方法的使用:

open方法是教程中最基础的打开文件的句柄使用方法,较为常见

教程中给出的使用方式有三种使用方式

open FILEHANDLE,EXPR

open FILEHANDLE,MODE,LIST

open FILEHANDLE

我在这里只介绍简单的使用方式,其它的可自行进行扩展学习。


open文件内容的读取和写入:

use strict;

#准备进行读取的文件

my $my_file = "D:/file/file.txt";

#FILEHANDLE 为自命名句柄,大写,<可省略

open (FILEHANDLE,"< $my_file") or die "Can‘t open $my_file";

#打印句柄读取内容

print <FILEHANDLE>;

#需要写入信息的文件,可以存在也可以不存在

my $print_file = "D:/file/file2.txt";

#一个>表示删除原有文件写入,两个>表示追加写入

open (FILEHANDLE2,"> $print_file") or die "Can‘t open $print_file";

#将读取的数据写入到需要写入的文件中,当然这里要写入的信息不一定是句柄,可以是任何内容,写入文件的句柄是需要存在的。

print <FILEHANDLE2> <FILEHANDLE>;

close FILEHANDLE;#关闭读取文件句柄

close FILEHANDLE2;#关闭写入文件的句柄

IO::File模块的使用:


IO::File模块需要先创建新的文件句柄:然后open方法打开文件,它和open函数的工作方法类似:

use strict;

use IO::File;#导入IO模块

#创建新的文件句柄,此处的文件句柄名需要根据自己的要求来命名,可以不是大写字母

my $filehandle = new IO::File;

#用句柄打开文件file.txt,<表示文件为被读取

$filehandle->open("< file.txt") or die "Can‘t open file.txt";

#打印读取的文件内容

print <$filehandle>;

#创建一个新的文件句柄

my $filehandle1 = new IO::File;

#该文件句柄打开需要写入的文件

$filehandle1->open("> file1.txt") or diw "Can‘t open file1.txt";

#将hello word 信息打印入该文件句柄

$filehandle1->print ("hello word");

$filehandle->close;#将读取文件的句柄关闭

$filehandle->close;#将写入文件的句柄关闭

FileHandle模块的使用:

FileHandle方法应该是在IO模块中的方法中衍生出来的。


use strict;

use FileHandle;#导入FileHandle模块

#创建读取文件的句柄

my $filehandle = new FileHandle ("< file.txt") or die "Can‘t open file.txt";

#打印该文件内的内容

print <$filehandle>;

#创建写入文件的文件句柄

my $filehandle1 = new FileHandle("> file1.txt") or die "Can‘t open file1.txt";

#将hello word信息写入该句柄中

print <$filehandle1> "hello word";

close $filehandle;#关闭读取文件的句柄

close $filehandle1;#关闭写入文件的句柄

以上三种方法在开发的过程中都曾尝试过,最为常用的为最后一种方法,使用FileHandle模块方法,比较简洁,对比第二种方法,将open和创建归为一个步骤来进行解决。但是对于这三种方法各自在性能方面或者其它方面的优缺点暂时我还不能进行解答,只是将该三种创建句柄的方法归纳出来供大家进行参考和使用,在本总结中如果存在不正确的地方,也请大家给我留言进行修正,如果对该方面了解比较多的,也可以提出更对宝贵意见,仅以此来抛砖引玉。

在后面的章节中我会详细对文件句柄进行更深入的探讨,会对后两个模块进行更深入的研究和解析。

时间: 2024-11-06 02:11:34

关于perl中文件操作句柄使用的几种方式-基础版的相关文章

解决Flask中文件操作出现UnicodeDecodeError UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe6 in positio

写一个Flask应用的功能时需要读文件,文件内容含指定字符串的话(即有个if key in filecontent的比较)就把文件内容输出到页面,,结果报错UnicodeDecodeError,查阅Flask的文档却似乎讲Flask默认哪里都是utf8编码,可现在却出了个由于字符是utf8而不是ascii报的错 最后解决了 我灵机一点把filecontent解码一下,写成filecontent.decode('utf8'),就顺利的运行了 版权声明:本文为博主原创文章,未经博主允许不得转载. 解

015_C语言中文件操作

 文件:存储在外部介质上的数据集合 ASCII码文件和二进制文件 流式文件和非流式文件 在内存中只有1和0,电脑在显示文件时,按一定编码显示 流式文件:输入输出的数据流的开始和结束仅受程序控制而不受物理符号控制 缓冲文件和非缓冲文件 每一个使用的文件都会在内存中开辟一个缓冲区 文件打开fopen 文件关闭fclose 读到文件末尾时即读到EOF 文件操作所用到的函数fgetc/fputc  fgets/fputs   fscanf/fprintf等一些函数使用时可同过帮助文档得知 文件定位函

Python中文件操作

一.文件打开操作 1.文件操作步骤: (1)打开文件模式: f =open("db",'a')    #文件追加 f = open("db",'r')    #只读操作(默认模式) f = open("db",'w')    #只写操作,会先清空原文件 f = open("db",'x')    #文件存在,会报错,不存在创建并只写 f = open("db",'rx|a|w')  #以二进制的方式只读或只

VC++中文件操作(一)---CFileFind,CFileDialog,CFile,CArchive,CStdioFile

各种关于文件的操作在程序设计中是十分常见,如果能对其各种操作都了如指掌,就可以根据实际情况找到最佳的解决方案,从而在较短的时间内编写出高效的代码,因而熟练的掌握文件操作是十分重要的.本文将对Visual C++中有关文件操作进行全面的介绍,并对在文件操作中经常遇到的一些疑难问题进行详细的分析. VC++中文件操作(一) ***************************************************************************××××××××××第一.V

python中文件操作的其他方法

前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r',encoding='utf-8')for i in p:print(i)结果如下: hello,everyone白日依山尽,黄河入海流.欲穷千里目,更上一层楼. 1.readline   #读取一行内容 p=open('poems','r',encoding='utf-8') print(p.rea

C#中关于增强类功能的几种方式

C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀.仅当使用 using 指令将命名空间显式导入到源代码中之后,扩展方法才可使用. namespace Extensions { public static class StringExtension { public stati

聊聊业务系统中投递消息到mq的几种方式

背景 电商中有这样的一个场景: 下单成功之后送积分的操作,我们使用mq来实现 下单成功之后,投递一条消息到mq,积分系统消费消息,给用户增加积分 我们主要讨论一下,下单及投递消息到mq的操作,如何实现?每种方式优缺点? 方式一 step1:start transaction step2:生成订单 step3:投递消息到mq step4:commit transaction 这种方式是将发送消息放在了事务提交之前,可能存在的问题: step3发生异常 导致step4失败,下单失败,直接影响到下单业

Struts2中获取HttpServletRequest,HttpSession等的几种方式

转自:http://www.kaifajie.cn/struts/8944.html package com.log; import java.io.IOException; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import o

C语言中存储多个字符串的两种方式

C语言中存储多个字符串的两种方式 方式一    二维字符串数组 声明: char name[4][10] = { "Justinian", "Momo", "Becky", "Bush" }; 在内存中的存储: J u s t i n i a n \0 M o m o \0 \0 \0 \0 \0 \0 B e c k y \0 \0 \0 \0 \0 B u s h \0 \0 \0 \0 \0 \0 这种方式会造成内存空间