When the interpolation has read $gene, it stops parsing and so never sees the dereference (->).
Whereas, inside ${ ... }, it expect any code, so it is parsed using the full Perl parser, rather than a limited parser looking only for a variable name.
Note:That's my fits-the-evidence assumption, not definitive deep source-diving knowledge.
Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
| [reply] [d/l] [select] |