从 1 周开始,我使用 sublime。我很高兴。但我有一点问题。我用 sublime 写 perl。
这是问题所在:
Sublime 无法识别'some string
被引用的内容,$test_scalar
并且它之后的所有内容都像字符串一样。当我这样输入时:
没有问题。
我尝试使用该Perl.tmLanguage
文件,但我不明白。
有人能帮助我吗?
从 1 周开始,我使用 sublime。我很高兴。但我有一点问题。我用 sublime 写 perl。
这是问题所在:
Sublime 无法识别'some string
被引用的内容,$test_scalar
并且它之后的所有内容都像字符串一样。当我这样输入时:
没有问题。
我尝试使用该Perl.tmLanguage
文件,但我不明白。
有人能帮助我吗?
Perl 是为数不多的使用这种结构来引用字符串的编程语言之一,许多程序编辑器根本不理解它。
想象一下,你正在写一个语法高亮,你必须明白所有这些都是一样的:
my $string = "this is my string";
my $string = qq(This is my string);
my $string = qq/This is my string/;
my $string = qq@This is my string@;
my $string = qq
(This is my string);
您的语法荧光笔必须了解q
,qq
和qx
是引用选项,并且它们后面的字符(在可能的空格之后)是正在引用的字符。哦,如果字符是 a (
、 a{
或 a [
,则结束引号是 a )
、}
或 a ]
。而且,这可以在多条线上。而且,对于 Perl,你真的只需要这个。
我知道vim可以处理 qq 引用问题,但是我尝试过的许多其他程序编辑器都失败了。甚至 Stackoverflow 的语法高亮(Google 的美化)也失败了。
如果您使用的是 Windows,请尝试使用Notepad++或Textpad 。或者,尝试使用 EPIC 编辑器的 Eclipse。我相信一个也有效。
因为 Perl5 不能被静态解析,编辑器不得不对语法进行猜测。在这种情况下他们能做得更好吗?可能,但请记住,不可能完美地做到这一点。
无论如何,最好的办法是与您的编辑器的 Perl 语法高亮插件的作者取得联系。
Emacs 的cperl-mode.el完成了这项工作:
也许您可以查看它的源代码并尝试在 Sublime 中使用相同的规则,或者最后将其指向插件作者。
正如你所说,没有问题,也没有语法错误。这是 sublime 或 vim 编辑器的正常行为。当您继续在下一行写 qq 运算符时,突出显示字符串在任一编辑器上都不起作用。