Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: Re: Re: Style, *again*

by Rich36 (Chaplain)
on Apr 09, 2003 at 19:04 UTC ( #249355=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Style, *again*
in thread Style, *again*

* No here-documents, but multi-line q/qq. Even repeated prints are better :)
The here-doc end marker cannot be indented, and I don't want something to be outdented in the middle of something that should be indented. Adding the indent spaces to the end marker means code stops working if it changes, which is VERY bad.

That's actually not true about the here-doc end marker not being able to be indented. pgs. 23-26 (ch. 1.11) of the Perl Cookbook give a few examples of how to do that. Below is an example with 4 space indents in front of each of the lines.

(my $text = <<' EOT') =~ s/^\s+//gm; This is a test of the multi-line, indented HERE document. EOT print qq($text);

This code strips out the leading spaces in the text so that you don't have extra spaces there. It still has the drawback that if you change the spacing it will break unless you adjust the <<'    EOT' declaration as well, but at least it lines up better in the code.

On another note, great list and thanks for sharing it.


Replies are listed 'Best First'.
Re: Re: Re: Re: Style, *again*
by Juerd (Abbot) on Apr 09, 2003 at 20:26 UTC

    my $text = <<'    EOT'

    Which part of "Adding the indent spaces to the end marker means code stops working if it changes, which is VERY bad." do you not understand? I'm not sure you even misunderstand it, because you repeat it: "It still has the drawback that if ...".

    Suppose you add 8 spaces to the end marker because it is indented by two levels. But you decide to loop over this code. You add a while (EXPR) { and a }, and being the smart programmer that you are, you indent the block immediately using the easy feature your favourite editor has for doing so. Oops, you just broke the code by changing indentation! Unless you add another 4 spaces to the end marker, your code no longer works.

    I prefer series of concatenations or repeated print statements to error prone sugar.

    As for removing whitespace from the beginning: I usually output HTML and do not care.

    - (do not use).

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://249355]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (1)
As of 2021-04-18 01:43 GMT
Find Nodes?
    Voting Booth?

    No recent polls found