On Jul 11, 2007, at 6:53 AM, Stefan Rusterholz wrote: > Ronald Fischer wrote: >> I have problems passing a HERE document as the first parameter >> to a function expecting more than 1 parameter. Example: >> >> # This is file here1.rb >> def q(a,b) >> end >> q(<<-END >> line1 >> line2 >> END >> ,'x') >> >> >> Executing this program yields the error messages >> >> ./here1.rb:9: syntax error, unexpected ',', expecting ')' >> ,'x') >> ^ >> ./here1.rb:9: syntax error, unexpected ')', expecting $end >> >> >> Using a temporary variable to hold the content of the HERE >> string works fine though: >> >> temp=<<-END >> line1 >> line2 >> END >> q(temp,'x') >> >> >> Bug in Ruby? Or do I misunderstand something in the workings of the >> parser? >> >> Ronald > > Not a bug in the parser, just wrong usage. > q(<<-END, 'x') > line1 > line2 > END > > That will work. > > Regards > Stefan > While it works, it is, IMHO, ugly and a little obfuscated. It is much better to simply assign the heredoc to a variable, and put the variable name in the function parameter. I know it is a correct form, but some times linguistically correct is not always good for you. (most people know what I mean if I mention C ) John Joyce