首页 文章资讯内容详情

在Perl中打开和关闭文件

2026-06-05 1 花语

以下两个函数具有多种形式,可用于在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 "Couldnt open file file.txt, $!"; while(<DATA>) { print "$_"; }

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

open(DATA, ">file.txt") or die "Couldnt open file file.txt, $!";

本示例实际上在打开文件进行写入之前将其截断(清空),这可能不是理想的效果。如果要打开文件进行读写,可以在>或<字符前加一个加号。

例如,打开文件进行更新而不截断-

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

首先截断文件-

open DATA, "+>file.txt" or die "Couldnt open file file.txt, $!";

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

open(DATA,">>file.txt") || die "Couldnt open file file.txt, $!";

双>>将打开要附加的文件,将文件指针放在末尾,以便您可以立即开始附加信息。但是,除非您在其前面加上加号,否则您将无法读取它-

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

下表是提供不同模式可能的值的表

序号实体与定义1个<或r

只读访问

2<或w

创建,写入和截断

3<或

写,追加和创建

4+<或r+

读写

5+>或w+

只读访问权限

6+>>或a+

只读访问权限

Sysopen功能

Perl中的sysopen函数类似于mainopen函数,不同之处在于它使用系统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 "Couldnt close file properly";