2007/7/11, Ronald Fischer <ronald.fischer / venyon.com>:
> 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

I believe you have got the order wrong.  Do it like this:

$ ruby -e 'def f(a,b) p a,b end
> f(<<XXX, 123)
> foo
> bar
> XXX'
"foo\nbar\n"
123

> 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?

The latter, see above. :-)

Kind regards

robert