专业编程基础技术教程

网站首页 > 基础教程 正文

Perl模式匹配大型连载6——基础实例:正则分隔符读文件

ccvgpt 2024-08-06 12:45:40 基础教程 11 ℃

题目:

我们有一个文件, 里面内容如下方所示, 我们需要根据|或者:或者@这3个作为分隔符来读取文件, 而不是默认的换行。

Perl模式匹配大型连载6——基础实例:正则分隔符读文件

解题思路:

perl提供修改默认的文件分隔符的方法, 只需要修改$/内置元素, 但是, $/只接收指定的内容, 也就是明确的字符或者字符串, 不接受正则表达式来作为分隔符。 那么我们只能一次性读取所有的文件, 再根据正则表达式来分隔文件。


具体实现如下:

open my $fh, '<', 'test.txt' or die "failed to open file \n"; #绑定文件句柄

my @strs;

{

#由于$/是内置的全局变量, 因此不要直接改变他, 这样会影响所有的地方, 正确的做法是将需要改变的内容放入一个block之内, 然后通过local来只改变该block内部的$/, 防止该变动影响其他程序内容。


local $/ = undef;

@strs = split /[|:@]/, <$fh>;

}

close $fh; # 关闭文件句柄

print "$_\n--------\n" for @strs;


split函数我们之前提过, 他是可以接收正则表达式来作为他的分隔符的, 因此我们使用这个特性来达到我们的目的。

最近发表
标签列表