Perl读文件的另类方法
总觉得在Perl里面读取文本文件应该用个循环:
while (<FH>) { print; }
或者是用数组:
@data = <FH>;
今天看代码时看到这样一段,真有种大开眼界的感觉。
$data = do { local $/; <FH>; };
查了查资料才明白:do
表示执行后面括号内的语句,$/
变量是读取文本文件时的行分隔符,默认是换行(\n
)。
那么这段代码的意思是,声明 local $/
,使得在 {}
内 $/
的值变成空值,那么从<FH>
读取时就不会再以
换行为分隔符,而是一次性将所有内容全部读出来。最后再用 do
将返回值赋给$data
。