以下两个函数具有多种形式,可用于在Perl中打开任何新文件或现有文件。
open FILEHANDLE, EXPR open FILEHANDLE sysopen FILEHANDLE, FILENAME, MODE, PERMS sysopen FILEHANDLE, FILENAME, MODEFILEHANDLE是打开函数返回的文件句柄 ,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+只读访问权限
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";