The code you posted runs just fine for me, and under strict and warnings to boot. The only way I could elicit the error you describe is by intentionally inserting either undef, a string literal, or an actual scalar in for the value of options. If the key is simply absent -- as in your template output 2 -- then the output looks as it should. There's nothing to iterate over and so no loop contents displayed. Are you positive that's what is actually generating the error?
"The dead do not recognize context" -- Kai, Lexx