以下两个函数具有多种形式,可用于在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 + 只读访问权限 |
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 读写 |
2 | O_RDONLY 只读 |
3 | O_WRONLY 只写 |
4 | O_CREAT 创建文件 |
5 | O_APPEND 附加文件 |
6 | O_TRUNC 截断文件 |
7 | O_EXCL 如果文件已经存在则停止 |
8 | O_NONBLOCK非阻塞 可用性 |
要关闭文件句柄,从而使文件句柄与相应的文件解除关联,请使用 close函数。这将刷新文件句柄的缓冲区并关闭系统的文件描述符。
close FILEHANDLE close
如果未指定FILEHANDLE,则它将关闭当前选择的文件句柄。仅当它可以成功刷新缓冲区并关闭文件时,它才返回true。
close(DATA) || die "Couldn't close file properly";