in reply to Pushed references getting stringified somehow?

The third segment stringifies the hash reference. That's why it prints a stringified hash reference. Also beware of precedence. I don't think it's hurting you, but if you're confused, be explicit.

use Data::Dumper; print ref($out[-1]), '|', Dumper($out[-1]);