之前的帖子与我想要尝试的内容相近:Multiple Substitutions
以下是我要做的替换:
$description =~ s/\"/\\"/g;
$description =~ s/\n/<br>/g;
当我使用CGI
查看我的UltraEdit
脚本时,它看起来不正确。如果我注释掉第一行($description =~ s/\"/\\"/g;)
,所有代码看起来都不错。
我不知道错误是什么?
答案 0 :(得分:2)
使用字符串 Perl 在UltraEdit主窗口底部状态栏中显示的活动文件为Perl语法高亮文件,在主菜单中打开UltraEdit 高级 - 配置 - 编辑器显示 - 语法突出显示。
已经在已安装的wordfiles 列表中选择了Perl (或旧版UltraEdit中的语言)。单击按钮打开将打开包含 Perl 的语法突出显示定义的wordfile。应使用取消关闭配置对话框。
使用UltraEdit v22.0安装的 Perl 的语法高亮显示为第一行:
/L5"Perl" PERL_LANG EnableMLS Line Comment = # Line Comment Preceding Chars = [~[^]^^$/\(] Block Comment On = =pod Block Comment Off = =cut Block Comment On Alt = =item Block Comment Off Alt = =cut Escape Char = \ File Extensions = CGI PL PM PLX
此语法突出显示问题的重点是:
<强> EnableMLS 强>
它可以实现多行字符串突出显示,就像在Perl中一样,字符串可以跨越多行。
逃脱字符= \
它定义了字符串中双引号和单引号的转义字符。
字符串字符=&#34;&#39;
不存在此处导致使用内部默认值来标记字符串的开头和结尾,这是双引号和单引号。
UltraEdit没有真正的Perl语言intellisense用于语法高亮。因此,它不知道示例块的第一行上的双引号是在Perl正则表达式中,因此应该完全忽略字符串突出显示。
正则表达式中的第一个双引号被忽略为使用反斜杠进行转义。但是第二个双引号没有被转义,因此UltraEdit的语法突出显示引擎将其解释为字符串的开头,并突出显示下一个未转义的双引号作为字符串。
第二个双引号也可以通过反弹进行转义,以使UltraEdit中的语法突出显示正确,即
$description =~ s/\"/\\\"/g;
第一个和第二个双引号是否必须用于Perl解释器在此正则表达式中转义。但是,这样做有助于在UltraEdit和大多数其他文本编辑器中突出显示此行正确。
可以关闭Perl的wordfile,因为关于此语法突出显示问题,无法在wordfile中执行任何操作。
我同意Lucas Trzesniewski撰写的评论:只有perl才能解析Perl。
顺便说一下:通过在单独的一行中向一个颜色组添加单引号或双引号,就可以突出显示颜色与双引号字符串不同的单引号字符串。例如附加
/C9"Single Quoted Strings"
'
当使用支持最多20个颜色组的UltraEdit&gt; = v17.00时,会突出显示为颜色组9定义颜色和字体样式的单引号字符串,而双引号字符串仍然用字符串定义的颜色和字体样式突出显示。 UltraEdit&lt; v17.00以及UEStudio&lt; v11.00仅支持最多8个颜色组。有关语法高亮定义的更多信息,请参阅UltraEdit论坛页面template for syntax highlighting language wordfile。
答案 1 :(得分:1)
我没有UltraEdit,但我有时遇到与Emacs perl-mode相同的情况。解决方案通常是添加带有结束引号字符的注释,即:
$description =~ s/\"/\\"/g; # " Satisfy the angry syntax highlighting gremlins
$description =~ s/\n/<br>/g;
您的里程可能会有所不同。