in reply to Evaluating variables within a string

You are over-thinking it. No Eval needed. This code produces your output:
perl -E "my $ref2 = q|parent_ref|; for my $i(0..4){say qq|first_string + ref[$i] second_string $ref2.ref[$i] third_string|}"

                All power corrupts, but we need electricity.