use Contextual::Return; sub blahblah { ## ... return ( STR { _special_to_string( $retval ); } HASHREF { +{ special => $retval, string => _special_to_string( $retval ) }; } ); } my $foo = blahblah( @some_args ); say "Foo: $foo"; say "Special from foo: ", $foo->{special};