使用不匹配的数组大括号(“[ ]”)或范围括号(“{ }”)编译(或执行)perl 程序会导致“缺少右大括号或方括号”语法错误。 Perl 经常将源代码报告为最后一个代码行(“at EOF”),这可能与实际缺失的部分相去甚远。
Perl 错误消息示例:
Missing right curly or square bracket at ./foo.pl line 100, at end of line
syntax error at ./foo.pl line 100, at EOF
Execution of ./foo.pl aborted due to compilation errors.
vi 或 Vi IMproved (VIM) 用户如何解决此错误消息?我添加了一个带有一些 VIM 增强功能的答案。请添加您自己的想法、实践或 vi 插件。
注意:使用 VIM 版本发布的原始问题没有突出显示 perl 大括号和方括号。许多较新的版本都这样做;看vim.org http://www.vim.org/了解更多信息。
现在如何解决此错误:
-
在 VIM 中,选择一个左 {、[ 或 ( 符号。%
命令在匹配的 { }、[ ] 和 ( ) 对之间跳转。不匹配会跳转到意想不到的位置。
-
Install perltidy http://perltidy.sourceforge.net/,运行它,并寻找奇怪的缩进代码块。
如何防止将来发生错误:
-
StackOverflow 问题 719476 https://stackoverflow.com/questions/719476/how-to-set-curly-braces-parentheses-square-brackets-arithmetic-operators-synt展示如何修改 VIM 大括号/中括号的语法着色。 (某些版本默认情况下不执行此操作。)
-
Karl Guertin 的 AutoClose 插件 http://www.vim.org/scripts/script.php?script_id=1849键入时自动匹配 [、(、{、"、' 符号。
-
perltidy http://perltidy.sourceforge.net/脚本重新格式化 Perl 以提高可读性,这可能会暴露不匹配的符号。
-
User 一个付费书呆子 https://stackoverflow.com/users/102704/a-paid-nerd说:“用perltidy http://perltidy.sourceforge.net/在 VIM 编辑器中nmap http://www.linux.com/archive/articles/54936."
nmap \g mt:%!perltidy<CR>'t
-
使用一致的 {} 匹配缩进(一般提示,并非特定于此 perl 错误)。
sub foo {
...
}
or
sub bar
{
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)