The PBP tells us to use here documents when a multi line string is too long. It suggests two lines is long enough for a single string, and anything longer should be a here document.
Here documents are a useful feature of Perl. I think they were stolen from the Bourne shell; at least that’s the first place I saw them. They’re a neat way to store a bunch of stuff all together.
An example:
my $usage = << "END_USAGE";
Usage: $0 [-a|-b] [-c] filename…
Options:
-a ASCII mode
-b Binary mode
-c Clear any errors after processing
Note that -a and -b are exclusive; you may have only one.
The default is binary mode.
END_USAGE
The entire block from between the << “END_USAGE”; and the sigil defined by that block as END_USAGE is the here document, and will be used as a single string.
Note that the type of quotes around the definition of the sigil name after the << determine if the block is interpolated or not. This block used double quotes, so $0 will be replaced by the program name, etc.
I approve of the use of here documents to keep messages readable and formatted something like they’ll be used. They’re not a panacea, and can be overused, but are a help. The next tips make them easier and safer, too.
Better than a here document might be a real external store which can be internationalized, but I haven’t actually used one, and can’t make useful suggestions.