warn 'tab' if unescape("\\t") eq "\t"; warn 'nl' if unescape("\\n") eq "\n"; warn 'bel' if unescape("\\07") eq "\07"; sub unescape { my($s)=@_; $s =~ s/(\\[^\d])/ (eval "\"$1\"") || $1 /ge; # "\t", "\n", etc $s =~ s/\\(0\d+)/ eval "chr($1)" /ge; # "\07", etc. return $s; } #### my %SLASHED = ( t => "\t", n => "\n", r => "\r", ); warn 'tab' if unescape("\\t") eq "\t"; warn 'nl' if unescape("\\n") eq "\n"; warn 'bel' if unescape("\\07") eq "\07"; sub unescape { my($s)=@_; $s =~ s/\\([^\d])/ $SLASHED{$1} || $1 /ge; # "\t", "\n", etc. $s =~ s/\\0(\d+)/ chr(oct($1)) /ge; # "\07", etc. return $s; }