現状、以下のようなコードがあります。

map { eval '$' . $_ . ' = $arg{' . $_ . '}' } qw(a b c);

evalをループの中に入れるのは効率が悪いと
あちこちに書いてあったのでevalを外に出したいのですが、
以下のように記述したところ、上手く動いてくれません。

eval q|map { '$' . $_ . ' = $arg{' . $_ . '}' } qw(a b c)|;

どういう風に記述すれば動くようになるでしょうか。
よろしくお願いします。