Perl 文件的打开和关闭


Perl中有以下两个具有多种形式的函数,可用于打开任何新的或现有的文件。

open FILEHANDLE, EXPR
open FILEHANDLE

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

这里FILEHANDLE是**open**函数返回的文件句柄,EXPR是包含文件名和打开文件模式的表达式。

Open 函数

以下是以只读模式打开**file.txt**的语法。小于号<表示文件必须以只读模式打开。

open(DATA, "<file.txt");

这里DATA是文件句柄,将用于读取文件。以下示例将打开一个文件并将它的内容打印到屏幕上。

#!/usr/bin/perl
open(DATA, "<file.txt") or die "Couldn't open file file.txt, $!";
while(<DATA>) {
   print "$_";
}

以下是以写入模式打开file.txt的语法。大于号>表示文件必须以写入模式打开。

open(DATA, ">file.txt") or die "Couldn't open file file.txt, $!";

此示例在打开文件进行写入之前实际上会截断(清空)文件,这可能并非所需效果。如果要打开文件进行读写,可以在>或<字符前加一个加号。

例如,要打开文件进行更新而不截断它:

open(DATA, "+<file.txt"); or die "Couldn't open file file.txt, $!";

要先截断文件:

open DATA, "+>file.txt" or die "Couldn't open file file.txt, $!";

可以以追加模式打开文件。在此模式下,写入点将设置为文件的末尾。

open(DATA,">>file.txt") || die "Couldn't open file file.txt, $!";

双>>以追加模式打开文件,将文件指针放在末尾,以便可以立即开始追加信息。但是,除非在它前面也放置一个加号,否则无法从中读取:

open(DATA,"+>>file.txt") || die "Couldn't open file file.txt, $!";

下表列出了不同模式的可能值

序号实体及定义
1< 或 r
只读访问
2> 或 w
创建、写入和截断
3>> 或 a
写入、追加和创建
4+< 或 r+
读写
5+> 或 w+
只读访问
6+>> 或 a+
只读访问

Sysopen 函数

Perl 中的**sysopen**函数类似于主要的open函数,不同之处在于它使用系统**open()**函数,并使用提供的参数作为系统函数的参数:

例如,要打开文件进行更新,模拟open中的**+<filename**格式:

sysopen(DATA, "file.txt", O_RDWR);

或者在更新前截断文件:

sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );

可以使用O_CREAT创建新文件,使用O_WRONLY以只写模式打开文件,使用O_RDONLY以只读模式打开文件。

如果必须创建**PERMS**参数指定指定文件的权限。默认情况下,它取**0x666**。

下表列出了MODE的可能值。

序号实体及定义
1O_RDWR
读写
2O_RDONLY
只读
3O_WRONLY
只写
4O_CREAT
创建文件
5O_APPEND
追加到文件
6O_TRUNC
截断文件
7O_EXCL
如果文件已存在则停止
8O_NONBLOCK
非阻塞可用性

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

Close 函数

要关闭文件句柄,从而取消文件句柄与相应文件的关联,可以使用**close**函数。这将刷新文件句柄的缓冲区并关闭系统的文件描述符。

close FILEHANDLE
close

如果没有指定FILEHANDLE,则它将关闭当前选定的文件句柄。只有在成功刷新缓冲区并关闭文件时,它才返回true。

close(DATA) || die "Couldn't close file properly";

更新于:2019年11月29日

3K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告