2018-11-13-Perl入门4

Perl文件操作及特殊变量

Posted by DL on November 13, 2018

正所谓前人栽树,后人乘凉。

参考资料 RUNBBO

1. Perl文件操作

  • Perl 使用一种叫做文件句柄类型的变量来操作文件。

  • 从文件读取或者写入数据需要使用文件句柄。

  • 文件句柄(file handle)是一个I/O连接的名称。

  • Perl提供了三种文件句柄:STDIN,STDOUT,STDERR,分别代表标准输入、标准输出和标准出错输出。

Perl 中打开文件可以使用以下方式:

open FILEHANDLE, EXPR
open FILEHANDLE **参数说明:**

FILEHANDLE:文件句柄,用于存放一个文件唯一标识符。
EXPR:文件名及文件访问类型组成的表达式。
MODE:文件访问类型。
PERMS:访问权限位(permission bits)。

1.1 open函数

open(DATA, "<file.txt");
表示使用 open 函数以只读的方式(<)打开文件 file.txt
<表示只读方式。
代码中的 DATA 为文件句柄用于读取文件

以下实例将打开文件并将文件内容输出:

#!/usr/bin/perl
 
open(DATA, "<file.txt") or die "file.txt 文件无法打开, $!";
 
while(<DATA>){
   print "$_";
}

下表列出了不同的访问模式:

< 或 r	只读方式打开,将文件指针指向文件头。
> 或 w	写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
>> 或 a	写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
+< 或 r+	 读写方式打开,将文件指针指向文件头。
+> 或 w+	 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
+>> 或 a+ 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。

1.2 close函数

在文件使用完后,要关闭文件,以刷新与文件句柄相关联的输入输出缓冲区,关闭文件的语法如下:

close FILEHANDLE
close FILEHANDLE 为指定的文件句柄,如果成功关闭则返回 true。

close(DATA) || die "无法关闭文件";

1.3 读写文件

**这里主要介绍操作符。**

实例

#!/usr/bin/perl
 
open(DATA,"<import.txt") or die "无法打开数据";
@lines = <DATA>;
print @lines;    # 输出数组内容
close(DATA);

1.4 输出函数

对于所有从文件句柄中读取信息的函数,在后端主要的写入函数为 print:

print FILEHANDLE LIST
print LIST
print

2. Perl特殊变量

  • Perl 语言中定义了一些特殊的变量,通常以 $, @, 或 % 作为前缀,例如:$_。

  • 最常用的特殊变量为 $_,该变量包含了默认输入和模式匹配内容。

特殊变量类型:

根据特殊的变量的使用性质,可以分为以下几类:

全局标量特殊变量。

全局数组特殊变量。

全局哈希特殊变量。

全局特殊文件句柄。

全局特殊常量。

正则表达式特殊变量。

文件句柄特殊变量。

2.1 全局标量特殊变量

$_	默认输入和模式匹配内容。

$.	前一次读的文件句柄的当前行号

$!	这个变量的数字值是errno的值,字符串值是对应的系统错误字符串

$0	包含正在执行的脚本的文件名

$ARGV	从默认的文件句柄中读取时的当前文件名

2.2 全局数组特殊变量

@ARGV	传给脚本的命令行参数列表

2.3 全局特殊文件句柄

ARGV  遍历数组变量@ARGV中的所有文件名的特殊文件句柄

STDERR  标准错误输出句柄

STDIN  标准输入句柄

STDOUT  标准输出句柄

2.4 全局特殊常量

__END__  脚本的逻辑结束,忽略后面的文本。

__FILE__  当前文件名

__LINE__  当前行号

__PACKAGE__  当前包名,默认的包名是main。

2.5 正则表达式特殊变量

$&  前一次成功模式匹配的字符串

$`  前次匹配成功的子串之前的内容

$'  前次匹配成功的子串之后的内容