in reply to quotes in Perl
Very nice, concise overview. A couple of additional notes to keep in mind regarding here docs:
-
The end tag specifier must follow the << without any intermediate space.
If the end tag is quoted explicitly (with either single or double quotes), spaces may be present:
print << "ENDTAG"; # works print << 'ENDTAG'; # works print << ENDTAG; # syntax error! -
Any leading spaces in the text of the here doc will be printed as such, which means using here docs in indented blocks gets messy:
Non-indented code block
Indented code block (same output as above)print "printing here doc:\n"; print <<"ENDTAG"; This text has 0 leading spaces This text has 4 leading spaces ENDTAG OUTPUT: printing here doc: This text has 0 leading spaces This text has 4 leading spaces
But, if the printed text includes leading whitespace, spaces can be included as part of the end tag to clean up the code block:{ print "printing here doc:\n"; print <<"ENDTAG"; This text has 0 leading spaces This text has 4 leading spaces ENDTAG }{ print "printing here doc:\n"; print <<" ENDTAG"; This text has 4 leading spaces ENDTAG } OUTPUT: printing here doc: This text has 4 leading spaces - The Filter::Indent::HereDoc and Filter::HereDocIndent modules allow here docs to be used within indented code blocks without adding the leading whitespace from the indentation to the output.
In Section
Tutorials