5

我试图理解一些用于逐块读取文本文件的Perl代码。

文本文件MYFILE如下所示:

First block
First Line: Something in here
Second Line: More here
Third Line: etc.

Second block
First Line: Something in here
Second Line: More here
Third Line: etc.

该代码用于提取找到正则表达式的块的行(它工作正常,我只是想理解它)

这是我不明白的代码部分:

local $/ = q||;
while (<MYFILE>) {
    do something;
}

有人可以向我解释一下这条线local $/ = q||;在做什么吗?

4

3 回答 3

10

$/输入记录分隔符。“这影响了 Perl 关于什么是‘线’的想法”。将其设置为空字符串,即''导致空行拆分记录。q||notation 引用管道中的内容,因此q||''. 你可以使用各种带q前缀的分隔符:q(), q//也都一样。

于 2013-09-16T08:49:28.260 回答
3
local $/ = q||; 

这会将空行视为“记录分隔符”。

local $/ = q||;
    while(<$fh>) {
        # each loop, $_ will be a different record
        # the first will be "First block\nFirst Line: Something in here\nSecond Line: More here\nThird Line: etc.\n\n"
        # etc.
      }
于 2013-09-16T09:03:37.887 回答
3

local $/ = q||;local $/ = '';

检查Quote 和 Quote-like Operators

local将临时使用动态范围设置全局变量$/输入记录分隔符)为空字符串,因此输入记录以一个或多个空行终止。

于 2013-09-16T09:37:37.753 回答