如何使用 VIM 修复 perl 语法错误“缺少右大括号或方括号”?

2024-03-14

使用不匹配的数组大括号(“[ ]”)或范围括号(“{ }”)编译(或执行)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/了解更多信息。


现在如何解决此错误:

  1. 在 VIM 中,选择一个左 {、[ 或 ( 符号。%命令在匹配的 { }、[ ] 和 ( ) 对之间跳转。不匹配会跳转到意想不到的位置。

  2. Install perltidy http://perltidy.sourceforge.net/,运行它,并寻找奇怪的缩进代码块。

如何防止将来发生错误:

  1. StackOverflow 问题 719476 https://stackoverflow.com/questions/719476/how-to-set-curly-braces-parentheses-square-brackets-arithmetic-operators-synt展示如何修改 VIM 大括号/中括号的语法着色。 (某些版本默认情况下不执行此操作。)

  2. Karl Guertin 的 AutoClose 插件 http://www.vim.org/scripts/script.php?script_id=1849键入时自动匹配 [、(、{、"、' 符号。

  3. perltidy http://perltidy.sourceforge.net/脚本重新格式化 Perl 以提高可读性,这可能会暴露不匹配的符号。

  4. 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

  5. 使用一致的 {} 匹配缩进(一般提示,并非特定于此 perl 错误)。

 

sub foo {
...
}

or

sub bar
{
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 VIM 修复 perl 语法错误“缺少右大括号或方括号”? 的相关文章

  • 当 Google 电子表格中的单元格更新时通过电子邮件通知

    我是脚本新手 添加了这个有效的脚本 function sendEmailAlert var ss SpreadsheetApp getActiveSpreadsheet var cellValue ss getActiveSheet get
  • 可以使 ctag 遵循 #include 指令吗?

    我正在尝试在我的 Makefile 中创建一个目标来自动创建tags使用 ctags 文件 我有一个源文件列表 cpp 文件 但我没有所有头文件的列表 我使用g MM创建标头依赖项列表 我本以为 ctags 会遵循任何 include生成标
  • vim 中项目列表的智能硬包装

    我喜欢 vim 而且我真的很喜欢在写文字时将它们硬包装起来 Tim Pope 的 markdown 插件很棒 并且构建得当我尝试硬包装项目列表时它可以正确完成工作 好吧 这就是我所说的正确完成工作的意思 here I write a lon
  • 使用 eval 加载模块

    我在 Perl 和内置函数方面遇到了一些麻烦eval http perldoc perl org functions eval html 我浏览了网络 但找不到任何答案或示例代码 我想动态加载模块 在执行时间之前我不知道它们 module
  • 如何在 Perl 脚本中调用 shell 命令?

    我如何调用 shell 命令的示例是什么 比如 ls a 在 Perl 脚本中以及检索命令输出的方法 如何从 Perl 程序运行 shell 脚本 http www perlmonks org node id 78523 1 使用系统sys
  • vim 命令可以映射到具有 >1 修饰符的组合键(例如 ctrl-alt-v)

    是否可以将 vim 命令映射到涉及多个修饰符的按键组合 例如 ctrl alt v 据我所知 唯一可以与另一个组合使用的修饰键是shift 例如
  • 如何使可能挂起的分叉进程超时?

    我正在编写一个 Perl 脚本 它将写入一些输入并将这些输入发送到外部程序 该程序挂起的可能性虽小但非零 我想将其超时 my pid fork if pid gt 0 eval local SIG ALRM sub die TIMEOUT
  • Perl:函数参数不足

    我是 Perl 的新手 目前正在尝试理解提到的错误消息 我有这段代码 仍然主要用于测试目的 usr bin perl use strict use warnings my info autor gt Karryanna jazyk gt c
  • 如何使用 Perl 的 DBI 处理 unicode?

    My 美味到 wp perl 脚本 http edward de leau net wordpress 23 compatible wordpress delicious daily synchronization script 20071
  • vim可以实时监控文件的变化吗

    我的问题与此类似如何实时监控文本文件 https stackoverflow com questions 18632 how to monitor a text file in realtime但我想在vim中做 我知道我可以读取打开的文件
  • Vim 中每行末尾的美元符号(“$”)是什么

    我对 Vim 还比较陌生 每当我启动 Vim 时使用vim LearnRuby rb 每行都会出现一个美元符号 Why set nolist 将关闭当前缓冲区的特殊字符 例如制表符显示为 I和行尾字符显示为 然而 如果它在你跑步时始终如一地
  • 在未压缩的 PDF 中进行集体内联编辑

    我有一个很大的 PDF 20mb 160mb 未压缩 我需要在其中的文本中进行查找和替换 大约 1000 次 这是我尝试过的 Via SVG 转换为 SVG inkscape 逐行读取 SVG 并在文件中进行替换 转换回 PDF gt 输出
  • 哪一个 cpan 安装程序是正确的? (CPAN.pm/CPANPLUS/cpanminus)

    有多个 cpan 模块安装程序可用 我至少知道 CPAN pm 与 perl 一起提供 CPANPLUS 和 cpanminus 三者有什么区别 什么情况下需要使用其中一种而不是另一种 还有其他我应该了解的模块安装程序吗 CPAN pm h
  • 在 Perl 中如何接受多个 TCP 连接?

    我对 Linux 的 Perl 脚本有疑问 它的主要目的是成为 3 个应用程序之间的中间人 它应该做什么 它应该能够等待 UDP 文本 不带空格 udp port 当它收到 UDP 文本时 它应该将其转发到连接的 TCP 客户端 问题是我的
  • 如何从模数、指数和私有指数创建 Crypt::RSA 对象?

    我正在尝试将以下 php 功能移植到 perl public function loadKey mod exp type public rsa new Crypt RSA rsa gt signatureMode CRYPT RSA SIG
  • Vim:用字符填充行

    如何在一行或多行末尾重复添加字符 将行填充到特定列 例如 x 代表第 40 列 不是该行上的字符 并且文本后没有空格或制表符 line one x line two x line three x line eleventy billion
  • 我应该如何使用 Mojo::UserAgent 处理 HTML META 标记?

    我必须处理一些配置错误的 Web 服务器 因此我开始处理 HTML 元标记以将信息反馈到 Web 用户代理对象中 我尝试了多种方法来做到这一点莫乔利西斯 http mojolicio us并决定在响应中寻找 完成 事件 我的目标是让其余代码
  • 为什么 perl2exe 抱怨“无法解析的符号:Perl_Gthr_key_ptr”?

    在 Perl 中 这个错误是什么意思 Unresolved symbol Perl Gthr key ptr 我在 HP UX PA RISC 计算机上使用 perl2exe 将 Perl 文件转换为二进制文件时遇到此错误 usr lib
  • 有没有一个 vim 命令可以重新定位选项卡?

    如何更改当前选项卡的位置 顺序Vim 例如 如果我想将当前选项卡重新定位为第一个选项卡 您可以使用以下命令重新定位选项卡 tabm使用相对或零索引绝对参数 绝对 将选项卡移至位置 i tabm i 相对的 将选项卡 i 位置向右移动 tab
  • 我无法使用 LWP::UserAgent 连接到任何 HTTPS 站点

    我正在尝试创建一个仅连接到网站的脚本 但是 由于某种原因 它不会连接到使用 HTTPS 的任何内容 我们在这里启用了代理 但是 我相信代理不是问题 因为如果我要连接到网络内部不通过代理建立隧道的 HTTPS 它仍然会失败 如果我要在任何不使

随机推荐

  • 使用转换后的边界进行布局

    我已经缩放了窗格中的一个节点 但窗格的布局考虑了边界 没有任何转换 我希望它考虑到转换后的边界 例如 和代码 import javafx application Application import javafx geometry Pos
  • 如何在 Postgres.app 中降级/使用以前版本的 Postgres DB

    我已经从这里安装了 Postgres app http postgresapp com http postgresapp com 几天以前 它附带 Postgres 9 4 4 今天我发现我使用的软件官方只支持Postgres 9 3 9
  • Javascript导入包无法解析模块说明符

    我正在尝试导入使用 npm 下载的模块 我的 json 文件是 name nodejs web app1 version 0 0 0 description NodejsWebApp1 main server js author name
  • 致命异常:iOS 上的 NSInternalInconsistencyException 崩溃

    几天来我一直在尝试重新创建和研究这个问题 但我不会去任何地方 这是堆栈跟踪 任何人都可以阐明正在发生的事情吗 我认为这与远程通知有关 不久前 当我安装 firebase sdk 时 问题就开始了 当时事故发生的次数并不多 但现在 事故发生的
  • 带有 pandas 数据框的子图

    我想使用 pandas 数据框 称为 df 在图上创建多个子图 我原来的情节在这里 df plot x month y number title open by month color blue 我在本网站的 使用图形和子图 部分尝试了多次
  • 我如何定义“其余宽度”?

    这是我的代码 function tags input on focusout function var txt this value replace a z0 9 ig allowed characters if txt span span
  • 如何运行 Spark Java 程序

    我为 Spark 编写了一个 Java 程序 但是如何从 Unix 命令行运行和编译它 编译运行时是否必须包含任何 jar 结合官方步骤快速入门指南 https spark apache org docs latest quick star
  • D 中的枚举与不可变

    有什么区别 enum i 2 enum s Hello and immutable i 2 immutable s Hello 在 D 2 0 中 An enum是用户定义的类型 而不是变量 enum e 2 是一个 像这样的东西的简写en
  • 查找但不深入到包含搜索文件的目录

    我有几个由 pom xml 或类似配置的项目 我想使用 linux file 命令来定位这些项目 例如经过find name pom xml 然而 由于路径很深 这需要一些时间 我想用find prune当我已经找到文件时停止在子目录中搜索
  • 在哪里使用 Redux 处理计算属性?

    使用 Redux 时 存储应该是唯一的事实来源 并且没有冗余 假设商店的一部分代表有名字和年龄的人 传统面向对象编程中的 person 类可能如下所示 class Person constructor first last birthday
  • 抽象控件中的 VisualState

    我有一个抽象的 BaseControl 其中包含依赖项属性以及默认样式和 VisualState 我想在继承的控件中使用这些 VisualState 据我所知 设置继承控件的模板不会使 VisualState 访问它需要更新的 UIElem
  • 在 .net 5 控制台应用程序中利用用户机密

    我正在构建一个简单的控制台应用程序来处理大型 CSV 文件 SDK版本5 0 202我使用的是 Manjaro Linux CODE using System using System Text using TinyCsvParser us
  • Android 资源限定符 -sw#dp 与 -w#dp

    假设我正在为屏幕尺寸等于或大于 600dp 的设备开发不同的布局 我想使用 android 3 2 后的资源限定符 我创建了一个名为layout sw600dp并将我的布局放在那里 但同时我可以创建一个名为的文件夹layout w600dp
  • 查明文件是否已更改

    我想查明自上次启动 shell 脚本以来文件是否已被修改 也许可以通过创建布尔值或其他东西 也许可以将上次运行脚本的时间保存在一个文本文件中 下次启动脚本时它应该读取该文件 然后它应该找出哪些文件已更改 以便我可以检查是否有文件已使用以下内
  • Laravel 5.8 中 Pusher 连接失败

    我在 laravel 5 4 中使用 Pusher 没有任何问题 但现在我尝试使用 laravel 5 8 但出现以下错误 我已经尝试了我能想到的一切 甚至改变了encrypted to false万一 我三次检查了我的推送者凭据 Lara
  • uifont“Impact”不适用于 iOS

    我正在尝试使用 Impact ttf 它是 OSX 内置的 但在 xcode 上看不到自定义字体 所以我将它包含在我的项目中 如屏幕所示并使用 UIFont font1 UIFont fontWithName Impact ttf size
  • 在 iOS SDK 4.2 上构建越狱设备

    我有一个通过 Cydia 分发的应用程序 它没什么黑科技 只是一个连接到 Web API 的 GUI 我上次提交更新是在 SDK 4 0 之前 我使用了可用的说明here http thebigboss org hosting reposi
  • Javascript:检索对象属性名称

    我正在尝试编写一个需要知道传入对象的属性名称的函数 如下所示 var data key1 value1 key2 value2 etc i want the string value key1 如何从中检索字符串 key1 data 我知道
  • CSS 表格宽度 - 100% + 减去边距

    我偶然发现了一个我不完全确定如何解决的问题 我有一个包含多个 div 的页面 其中一个包含一个表格 但边距为 20 像素 我需要这个表格 对接 另一个 div 的右侧 这是我通过使用 20px 的边距来完成的 正如我所希望的那样 由于此 d
  • 如何使用 VIM 修复 perl 语法错误“缺少右大括号或方括号”?

    使用不匹配的数组大括号 或范围括号 编译 或执行 perl 程序会导致 缺少右大括号或方括号 语法错误 Perl 经常将源代码报告为最后一个代码行 at EOF 这可能与实际缺失的部分相去甚远 Perl 错误消息示例 Missing rig