perl的语法非常灵活,有些不为人知的语法往往具有很强的功能。使用这些语法可以大大提高俺们coding的效率。
设想这样一种情景,我们要用perl自动生成一个file,在file的头部,希望加入一个注释说明这个文件是自动生成的:
# This file is automately generated by parsing the following files:
# a.h
# b.xml
当然,我们可以用print:
print "# This file is automately generated by parsing the following files:/n";
print "# a.h/n";
print "# b.xml/n";
但是这个方法存在以下两个问题:
1. 需要额外的print、引号和'/n'。别小看这些工作量。perl的哲学之一就是要尽量偷懒:)
2. 如果要更新注释的时候,发现要插入一段内容,从而发生了字符串换行操作,那修改print语句将是一件非常痛苦的事情。
偷懒的方法是:
print <<END_OF_STRING;
# This file is automately generated by parsing the following files:
# a.h
# b.xml
END_OF_STRING
当perl解析到print语句的时候,发现"<<END_OF_STRING",就会向后查找,一直到"END_OF_STRING"中间的所有内容都会被当作一个string替换到"<<END_OF_STRING"。
怎么样,这个功能在多行string的处理中很实用吧。