Я полагаю, что это ошибка с trans
, но на самом деле вам нужно указать список «от» и список «к», иначе он просто будет интерпретировать левую сторону как диапазон графем, которые будут переведены вдругой диапазон графем:
say "'well done'".trans("abcde" => "vwxyz" ); # OUTPUT: 'wzll yonz'
Если вы создадите список строк для преобразования из одной в другую, вы получите желаемый результат:
say "'well done'".trans(["'"] => ["\\'"] ) # OUTPUT: \'well done\'