1

从 1 周开始,我使用 sublime。我很高兴。但我有一点问题。我用 sublime 写 perl。

这是问题所在:

在此处输入图像描述

Sublime 无法识别'some string被引用的内容,$test_scalar并且它之后的所有内容都像字符串一样。当我这样输入时:

在此处输入图像描述 没有问题。

我尝试使用该Perl.tmLanguage文件,但我不明白。

有人能帮助我吗?

4

4 回答 4

3

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,qqqx是引用选项,并且它们后面的字符(在可能的空格之后)是正在引用的字符。哦,如果字符是 a (、 a{或 a [,则结束引号是 a )}或 a ]。而且,这可以在多条线上。而且,对于 Perl,你真的只需要这个。

我知道vim可以处理 qq 引用问题,但是我尝试过的许多其他程序编辑器都失败了。甚至 Stackoverflow 的语法高亮(Google 的美化)也失败了。

如果您使用的是 Windows,请尝试使用Notepad++Textpad 。或者,尝试使用 EPIC 编辑器的 Eclipse。我相信一个也有效。

于 2013-01-04T15:36:49.377 回答
1

因为 Perl5 不能被静态解析,编辑器不得不对语法进行猜测。在这种情况下他们能做得更好吗?可能,但请记住,不可能完美地做到这一点。

无论如何,最好的办法是与您的编辑器的 Perl 语法高亮插件的作者取得联系。

于 2013-01-04T14:33:01.240 回答
0

Emacs 的cperl-mode.el完成了这项工作:

Emacs 截图

也许您可以查看它的源代码并尝试在 Sublime 中使用相同的规则,或者最后将其指向插件作者。

于 2013-01-04T15:30:18.857 回答
0

正如你所说,没有问题,也没有语法错误。这是 sublime 或 vim 编辑器的正常行为。当您继续在下一行写 qq 运算符时,突出显示字符串在任一编辑器上都不起作用。

于 2013-01-04T12:53:52.677 回答