Я иду на [.]
, чтобы соответствовать буквальному периоду:
$export ~= s{[.]odt$}{.pdf};
Обратите внимание, что только первая половина вызова s///
является регулярным выражением. Замена - это обычная строка, для которой не требуется экранировать точку.
Возможно, вы захотите представлять файлы как объекты, а не как строки, используя Path :: Class .