在Perl中打开和关闭文件

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

open FILEHANDLE, EXPR
open FILEHANDLE

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

FILEHANDLE是打开函数返回的文件句柄 ,EXPR是具有文件名和打开文件模式的表达式。

开放功能

以下是 在只读模式下打开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<或
写,追加和创建
4+ <或r +
读写
5+>或w +
只读访问权限
6+ >>或a +
只读访问权限

Sysopen功能

Perl中的sysopen函数类似于main 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可能值的表。

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

关闭功能

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

close FILEHANDLE
close

如果未指定FILEHANDLE,则它将关闭当前选择的文件句柄。仅当它可以成功刷新缓冲区并关闭文件时,它才返回true。

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