我正在尝试了解一些用于逐块读取文本文件的 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||;
行在做什么吗?
答案 0 :(得分:10)
$/
是input record separator。 “这影响了Perl关于”线“是什么的想法。将其设置为空字符串,即''
会导致空行拆分记录。 q||
符号引用管道中的内容,因此q||
与''
相同。您可以使用q
前缀的各种分隔符:q(), q//
也是相同的。
答案 1 :(得分: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.
}
答案 2 :(得分:3)
local $/ = q||;
与local $/ = '';
检查Quote and Quote-like Operators。
local
会暂时使用dynamic scope设置全局变量$/
(input record separator)来清空字符串,因此输入记录会被一个或更多空行。