Wrapping it in double quotes causes it to output, and seems like a better solution than using eval.
Thanks all! On Wed, Sep 18, 2019 at 5:43 AM Gerald Richter - ECOS Technology < gerald.rich...@ecos.de> wrote: > What is happing if you write "$LETTERS{$letter}", i.e. us quotes instead > of eval? > > > > Regards > > > > Gerald > > > > *Von:* Chuck Zumbrun [mailto:chuck.zumb...@gmail.com] > *Gesendet:* Dienstag, 17. September 2019 17:22 > *An:* embperl@perl.apache.org > *Betreff:* embPerl and Readonly module issue > > > > Using embPerl 2.5.0, porting an application from Ubuntu 12.04, perl 5.14, > Readonly 2.0.0 to Ubuntu 18.04, perl 5.26, Readonly 2.05 > > > > If I have a Readonly hash like this: > > > > [- > use Readonly; > > Readonly our %LETTERS => { > "A" => "Letter A", > "B" => "Letter B", > "C" => "Letter C" > } > -] > > > and I try to use it like this: > > > [$ foreach $letter (keys %LETTERS) $] > [+ $LETTERS{$letter} +] > [$ endforeach $] > > > > That works with the older versions and doesn't with the newer. With the > newer version nothing is output. If I do something to force it to be > evaluated, like: > > > > [$ foreach $letter (keys %LETTERS) $] > [+ eval { $LETTERS{$letter} } +] > [$ endforeach $] > > > > It does output "LETTER A", etc. in both versions. > > > > Any explanation of what's happening or suggestions on how to best deal > with it? > > > > > > > > > -- > This message has been checked by Libra Esva and is found to be clean. > Mark it as spam > <http://srvmailgw3.i.ecos.de/cgi-bin/learn-msg.cgi?id=D925740090.A4277> > Blacklist sender > <http://srvmailgw3.i.ecos.de/cgi-bin/learn-msg.cgi?blacklist=1&id=D925740090.A4277> >