在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, $!";
下表是提供不同模式可能的值的表
只读访问
创建,写入和截断
写,追加和创建
读写
只读访问权限
只读访问权限
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可能值的表。
读写
只读
只写
创建文件
附加文件
截断文件
如果文件已经存在则停止
可用性
关闭功能
要关闭文件句柄,从而使文件句柄与相应的文件解除关联,请使用 close函数。这将刷新文件句柄的缓冲区并关闭系统的文件描述符。
close FILEHANDLE close
如果未指定FILEHANDLE,则它将关闭当前选择的文件句柄。仅当它可以成功刷新缓冲区并关闭文件时,它才返回true。
close(DATA) || die "Couldn't close file properly";