>>22
元文字列中にダブルクウォートがあるとヤバイ事態になる気がするんですが…?
元文字列がSJIS/JIS7でなければ、

$str =~ s/\\n/\n/g;

で、充分に通常の用途では事足りると思う。
evalを使うなら「"」と、変換に無関係な「\」は要エスケープだと思う。

ただしSJISの場合はnの前の\が、漢字コードの2バイト目でない事を確認する必要あり。
(\\nはリテラルな\nである、といったエスケープ定義も必要になったりすると面倒だが)