On Sat, 13 Sep 2003, Miko O'Sullivan wrote: > [EMAIL PROTECTED] (Jon Jensen) wrote in message news:<[EMAIL PROTECTED]>... > > INSERT INTO sometable (5, <<\. > > a > > very long > > string > > \. > > ); > > > I'm delighted to hear that here docs are being discussed for postgres. > In the world of Perl here docs make life SO MUCH easier by allowing > for independent quoting scopes. Jon, I'm totally in agreement with you > that here docs would be a valuable addition to postgres. I'd like to > propose a few modifications on the syntax you suggest above. > > In Perl, the rule for here docs is NOT "it starts immediately after > the definition of the terminator" (as in your example). The rule is > "it starts on the first line after the end of the command in which the > terminator appears". There's a very good reason for this distinction. > That reason is that it allows the command to be succinct, usually a > single line, and the here doc stays completely separate. So, your > example would like this instead: > > INSERT INTO sometable (5, <<'(END)'); > a > very long > string > (END) > > Notice that the entire INSERT command is on one line. Very easy to > read.
I'm aware of that distinction, and use it to advantage in Perl. It would make parsing harder, though. > One other small tweak. In Perl 5 the rule is that the terminator must > be flush to the left of the line. That means that here docs can mess > up otherwise nicely indented code. That issue is being fixed in Perl > 6, where the terminator can be indented with the rest of the code. That also would make parsing harder, and Perl 6 is not yet real, so it'd be deviating from historical shell and Perl here document syntax. In the end it looks like consensus has settled on a new syntax with some of the benefits of here documents without the requirement that the end token be on its own blank line (and thus necessitating end-of-line checks) and perhaps more importantly, not requiring that everything quoted in a here document always end with a newline. Jon ---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])