my %map = ( F => "|", S => "^", T => "&", R => "~", E => "\\" ); $_ = "\\E\\S\\"; s/\\([FSTRE])\\/$map{$1}/g; print "s///g: [$_]\n"; $_ = "\\E\\S\\"; 1 while s/\\([FSTRE])\\/$map{$1}/; print "1 while s///: [$_]\n"; __END__ s///g: [\S\] 1 while s///: [^]