Here Documents
A line-oriented form of quoting is based on the Unix
shell “here-document” syntax. Following a <<
, you specify a string to
terminate the quoted material, and all lines following the current
line down to the terminating string are the value of the item. This
is of particular importance if you’re trying to print something like
HTML that would be cleaner to print as a chunk instead of as
individual lines. For example:
#!/usr/local/bin/perl -w my $Price = 'right'; print <<"EOF"; The price is $Price. EOF
The terminating string does not have to be quoted. For example, the previous example could have been written as:
#!/usr/local/bin/perl -w my $Price = 'right'; print <<EOF; The price is $Price. EOF
You can assign here documents to a string:
my $assign_this_heredoc =<< "EOS"; This string is assigned to $whatever. EOS
You can use a here document to execute commands:
#!/usr/local/bin/perl -w print <<`CMD`; ls -l CMD
You can stack here documents:
#!/usr/local/bin/perl -w print <<"joe", <<"momma"; # You can stack them I said foo. joe I said bar. momma
One caveat about here documents: you may have noticed in each of these examples that the quoted text is always left-justified. That’s because any whitespace used for indentation will be included in the string. For example:
#!/usr/local/bin/perl -w print <<" INDENTED"; Same old, same old. INDENTED
Although you can use a trick of including whitespace in the terminating tag to keep it indented (as we did here), the string itself will have the ...
Get Perl in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.