From: mike d. <md...@je...> - 2003-10-12 15:57:39
|
begin Chris Petersen quotation: > I had to make 2 regex matches, to account for the <<"end here" as well > as <<end_here (can't start with a number or whitespace) syntax. Perl > also allows for a "<< x 10" to indicate "next 10 lines", but I didn't > know how to make jEdit match that syntax, so I left it off. I don't think this is correct. First of all, the only references I could find to this syntax were from old version of the perldata man page (e.g. http://www.mit.edu:8001/perl/perldata.html, from Perl 5.000 I think): A line-oriented form of quoting is based on the shell here-doc 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. The terminating string may be either an identifier (a word), or some quoted text. If quoted, the type of quotes you use determines the treatment of the text, just as in regular quoting. An unquoted identifier works like double quotes. There must be no space between the << and the identifier. (If you put a space it will be treated as a null identifier, which is valid, and matches the first blank line--see Merry Christmas example below.) The terminating string must appear by itself (unquoted and with no surrounding whitespace) on the terminating line. print <<EOF; # same as above The price is $Price. EOF print <<"EOF"; # same as above The price is $Price. EOF print << x 10; # Legal but discouraged. Use <<"". Merry Christmas! print <<`EOC`; # execute commands echo hi there echo lo there EOC In particular, notice the parenthetical "If you put a space it will be treated as a null identifier, which is valid, and matches the first blank line--see Merry Christmas example below" and the "Legal but discouraged" comment. This text is not in a more current version of perldata (5.8.0). Moreover, this construct does not take the "next 10 lines". It takes all text up until the first blank line and applies the repetition operator to the result. In the above case, it prints "Merry Christmas!\n" 10 times. This does in fact still work in a modern Perl. -md |