Heredoc with variable interpolation breaks script

#!/usr/bin/ruby

var1 = “test”
var2 = <<EOF
let us look #{test}
EOF
puts var2

On Mon, Sep 11, 2006 at 06:20:34PM +0900, Oliver Heins wrote:

I have a somewhat weird problem: Since a few days (I recognized
yesterday) a script ceased to work which did perfectly before. I
stripped it down to a heredoc with string interpolation, which now
breaks the script. Here’s a minimal example:

#!/usr/bin/ruby

var1 = “test”
var2 = <<EOF
let us look #{test}
EOF
puts var2
You are calling the method “test” (which is a perlism, FYI) inside your
HEREDOC. I’m pretty sure this was just a typo, and you meant to say
#{var1}, not #{test}.

Logan C. [email protected] writes:

You are calling the method “test” (which is a perlism, FYI) inside your
HEREDOC. I’m pretty sure this was just a typo, and you meant to say
#{var1}, not #{test}.

Indeed, it was a typo. The real error was that I did a chomp on an
undefined array-entry. I create the array key on the fly and was just
presuming that the source I was parsing contained the specific entry.
As the source changed, my script failed. I now initialize the array
keys with an empty string and everything works fine.

Thanks for the hint.
olli