Sublime中Perl代码的s///r修饰符导致语法高亮失效问题
Perl脚本Sublime语法高亮失效问题(/r修饰符导致)
原因
Sublime自带的Perl语法高亮规则版本偏旧,没适配Perl 5.14及之后引入的s///r非破坏性替换修饰符。旧的语法定义里不把/r视作合法的替换修饰符,导致代码解析逻辑出错,进而中断整个文件的语法高亮。
解决方法
- 更新Perl语法包:在Sublime的Package Control中搜索安装
Perl Improved这类第三方语法包,它们会跟进Perl新版本特性,能正确识别/r修饰符。 - 手动修改语法规则:找到Sublime自带的
Perl.tmLanguage文件(路径通常为Packages/Perl/Perl.tmLanguage),定位到处理替换修饰符的正则规则,把r添加到允许的修饰符列表中。
替代方案
如果暂时无法更新语法高亮,可用传统写法实现相同的非破坏性替换效果:
# 分两行实现 my $new = $old; $new =~ s/cat/dog/; # 一行式写法 my $new = do { my $tmp = $old; $tmp =~ s/cat/dog/; $tmp };
内容的提问来源于stack exchange,提问作者vkk05
相关产品推荐
相关产品推荐

