warn 'tab' unless unescape("\\t") eq "\t"; #works warn 'nl' unless unescape("\\n") eq "\n"; #fails warn 'bel' unless unescape("\\07") eq "\07"; #fails sub unescape { my($s)=@_; $s =~ s/(\\[^\d])/$1/ge; #"\t", "\n", etc. $s =~ s/(\\0\d+)/$1/ge; #"\07", etc. return $s; }