总觉得在Perl里面读取文本文件应该用个循环:

while (<FH>) { print; }

或者是用数组:

@data = <FH>;

今天看代码时看到这样一段,真有种大开眼界的感觉。

$data = do { local $/; <FH>; };

查了查资料才明白:do表示执行后面括号内的语句,$/变量是读取文本文件时的行分隔符,默认是换行(\n)。 那么这段代码的意思是,声明 local $/,使得在 {}$/ 的值变成空值,那么从<FH>读取时就不会再以 换行为分隔符,而是一次性将所有内容全部读出来。最后再用 do 将返回值赋给$data