Итак, у меня есть файл test.txt, который содержит
home -> range
Если я редактирую файл в vim и запускаю команду %s/^\(.*\)->\(.*\)$/\2 ::= \1 ;/g он преобразует файл в 
range ::= home  ;
что я и хочу Однако, если я бегу
 perl -pi -e 's/^\(.*\)->\(.*\)$/\2 ::= \1 ;/g' test.txt
я думаю, что должен делать то же самое, я не получаю изменений - кто-то может сказать мне, что пошло не так? Я подозреваю, что нужно что-то избежать, но я выбрасываю на него всевозможные комбинации побега ... плюс я хотел бы иметь некоторые общие правила о преобразовании между двумя форматами ...
