#!/usr/bin/perl use warnings; use strict; # use re "debug"; my %CSV = ('n' => 'n', 't' => 't', 'f' => 'f', '\\' => '\\', ); $_ = '\\\\\\\\\\'; print "$_\n"; my $pos = 0; while (m/\\(.)/g) { $pos=pos($_);} s/\\(.)/exists($CSV{$1}) ? "\\$1" : "\\\\$1"/ge; s/^(.{$pos})\\$/$1\\\\/; print "result:\n$_\n";