in reply to Guess what is the print out?

Since $expr starts out holding the string '$a[0]' (without quotes), each time through the loop adds '${' to the front, and '}[0]' to the back (without the quotes). I'm guessing that something like   ${${${ .... ${$a[0]}[0]}[0] ... }[0] is printed.

I haven't a clue what the eval'd print prints, but I suspect it involves a lot of autovivification.

(After running the snippet: D'oh)