John Joyce
7/11/2007 12:26:00 PM
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