答案 0 :(得分:10)
my ($export = $doc) =~ s{\.odt}{\.pdf};
UPDATE:该解决方案无法编译(请注意自我:在SO上发布之前进行测试)。相反,你可以说
(my $export = $doc) =~ s{\.odt}{\.pdf};
答案 1 :(得分:7)
我选择[.]
来匹配文字句点:
$export ~= s{[.]odt$}{.pdf};
请注意,只有s///
调用的前半部分是正则表达式。替换是普通字符串,不需要转义句点。
您可能希望使用Path::Class将文件表示为对象而不是字符串。
答案 2 :(得分:0)
my%ext =('odt'=>'pdf'等等...); (我的$ export = $ doc)=〜s {。([^。] +)$} {'。'。($ ext {$ 1} || $ 1})}例如;