利用文件句柄进行输入输出

文件句柄是Perl中与外部数据源交互的接口,它可以是文件或其他输入源。本文介绍了如何创建和管理文件句柄,包括标准文件句柄如STDIN, STDOUT, STDERR的区别,以及使用open函数和IO::File模块的不同打开方式,如读、写、添加等。还强调了在使用open函数时避免与文件名中的特殊字符冲突的方法。" 4598428,679052,GIS面裁减算法详解,"['GIS算法', '网格', 'C语言']
摘要由CSDN通过智能技术生成

利用文件句柄进行输入输出
文件句柄定义:程序与外部数据源之间的接口。这里的数据源可以是实际的文件,也可以是其他的输入手段,如:串行设备,网络连接或键盘。
文件句柄不同于标量变量,这一点要牢记。这是一个独立的一种数据类型,文件句柄在符号表typeglob中有它自己的槽。文件句柄是一个结构化的信息集合,用来描述实际的连接。

标准文件句柄:STDIN STDOUT STDERR
STDOUT STDERR的主要区别:STDERR不进行缓冲处理,这样能确保错误能及是被写出。

创建文件句柄:两种方法,一种是open函数,一种是用IO::module(特别是IO::File模块)

以下将具体谈一谈如何创建文件句柄:
open FD "file";
open(FD,"file");
以只读的方式打开文件file
文件的打开方式分为:读,写,添加,读更新,写更新,添加更新;
读方式是缺省的打开方式,符号为<
如:open FD,'<',"file";
open(FD,"<file")
写方式符号为>
添加 >>
读更新 +< 注意点:如果文件不存在的话,这个操作将会失败,如果文件存在,则从文件开始处进行读,同时可以使用写操作,在使用的过程中,可以结合seek函数定位文件指针,
#!/usr/bin/perl
open FD,"+<tabconver1t.pl";
$stdout=select FD;
seek(FD,0,0);
print "print this message in the head of this file\n";
select $stdout;
print "goodbye\n";

这样,tabconver1t.pl中的开始部分的内容就会被print的输出所替代掉了,此中的seek定位指针函数下一部分讲解。

写更新 +> 如果文件不存在的,则先创建,如果文件存在,文件中的内容就会掉失,然后写数据到文件中,同时也可以读后写入的数据。

添加更新 +>> 文件不存在,就创建之,存在可能读,也可以写,写的数据直接添加到文件的结尾部分,当然,我们可以用seek定位文件指针,这样就可以写数据到别的地方了。

关于文件打开方式的使用方面的注意点,最后不要和file结合使用,因为有的文件名中有<,>,+这样的符号,这样可能导致程序误解。因此这个在使用open的时候可以使用三个参数。
如:open MYHANDLE,'<',$file;

打开标准输入和标准输出的小知识。
open FD,'-';
open FD,'<';
打开标准输入。
可以在程序中另以下片段:
$file=get_filename();
open FILE,$file?$file:'-';
如果取文件名失败,这个就从标准输入中取数据。
open MYSTDOUT,'>-';
打开标准输出。
如果打开一个名为"-"的文件时,可以这样:
open FILE,'+<','-';

使用IO::File创建文件句柄

IO::模块家族包括:
IO::Dir IO::File IO::Handle IO::Pipe IO::Seekable IO::Socket
使用IO模快更方便定义接口,但是以消耗系统的性能为代价的。
use IO::File;
$fh=new IO::File;
$fh->open("> myfile");
$fh->autoflush(1);
$fh->print("Message...\n");
$fh->close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值