Вам просто нужно:
eval $temp;
Причина, по которой ваша версия не работала, заключается в блочной форме eval, которая оценивает ее так, как если бы вы написали простую строку:
eval{"perl code here"}
похоже на написание этой строки perl:
"perl code here"
Это не код, это строка.
Форма блока обнаруживает то, что находится внутри блока. Если строка находится внутри блока, это просто строка, а не сценарий.
Строковая форма разрушает то, что находится внутри строки.