Getopts 不带破折号地标记错误选项

2023-12-08

Getopt::Long::Configure("no_pass_through");
my %opts = ();
GetOptions(\%opts,
           'opt1=s',
           'opt2=s',
           'opt3'
          );

test.pl bad_option_without_dash

当传递一个不带破折号的错误选项时,如何使 getopts 标记错误?我正期待着no_pass_through会处理这个的。我缺少什么?


Getopt::Long 只是提取选项。由您来验证这些选项和非选项参数的值(它们保留在@ARGV).

具体来说,如果您想确保仅传递了选项,那么您可以使用

@ARGV == 0
   or die("usage\n");

我用的是:

use Getopt::Long qw( );

my ( $opt_opt1, $opt_opt2, $opt_opt3 );

sub parse_args {
   ( $opt_opt1, $opt_opt2, $opt_opt3 ) = ();

   Getopt::Long::Configure(qw( posix_default ));
   Getopt::Long::GetOptions(
      'help|h|?' => \&help,
      'opt1=s'   => \$opt_opt1,
      'opt2=s'   => \$opt_opt2,
      'opt3'     => \$opt_opt3,
   )
      or usage();

   # Validate $opt_* here if necessary.

   !@ARGV
      or usage("Too many arguments.");

   return @ARGV;
}

sub main {
   # my () = @_;   # This program doesn't accept non-option args.
   ...
}

main(parse_args());

Helpers:

use File::Basename qw( basename );

sub help {
   my $prog = basename($0);
   print
"Usage:
  $prog [options]
  $prog --help

Options:
  --opt1 FOO
      ...

  --opt2 BAR
      ...

  --opt3
      ...
";
   exit(0);
}

sub usage {
   if (@_) {
      my ($msg) = @_;
      chomp($msg);
      say STDERR $msg;
   }

   my $prog = basename($0);
   say STDERR "Try '$prog --help' for more information.";
   exit(1);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Getopts 不带破折号地标记错误选项 的相关文章

  • “foreach”循环中会发生什么样的本地化?

    来自 perldocperlsyn http perldoc perl org perlsyn html Foreach Loops关于 Foreach 循环的主题 如果变量之前是 用 my 声明 它使用 变量而不是全局变量 但它仍然局限于
  • 从具有不同活动 perl 版本的另一个 perl 脚本调用 perl 函数

    我们有两个版本的 Active perl 5 6 和 5 24 我们有必须在 Active perl 5 24 版本 采用 TLS 1 2 版本 上执行的 Web 服务 并且需要从 Active perl 5 6 版本调用 我们使用的是wi
  • 如何强制 Perl 按需重新编译使用“/o”编译的正则表达式?

    技术问题 给定一个正则表达式 my regEx qr whatever myVar oxi Notice o for compile once 强制重新编译的最有效方法是什么一经请求 例如 当我从程序逻辑中知道 myVar值改变 而不下降
  • Perl:散列 2 中数组的数值排序(施瓦茨变换)

    这实际上是该线程的后续内容 Perl 散列中数组的数字排序 https stackoverflow com questions 7914931 perl numerical sort of arrays in a hash 我无法编辑原始问
  • 如何在 Perl 中运行匿名函数?

    sub print 1 sub print 1 我尝试了各种方法 都是错误的 sub 将为您提供指向该函数的指针 因此您必须通过引用调用 sub print Hello world n gt 另一种简单的方法 如所指出的布拉戈维斯特 布尤克
  • 将日期转换为指定格式并比较两个日期

    给定两个日期 Date1 format yyyy mm dd hh mm ss eg 2013 05 21 07 47 21 Date2 format Day Month date hh mm ss yyyy eg Thu Aug 1 09
  • Emacs cperl - 常量块中的缩进

    我正在运行基于 GNU Emacs 24 3 50 2 的 Aquamacs 3 0a cperl 版本是 6 2 当我编辑 Perl 常量块时 我得到了我不想要的额外缩进 use constant ONE gt 1 TWO gt 2 TH
  • 使用 unix ksh shell 脚本或 perl 脚本监视文件夹中的新文件并触发 perl 脚本

    我已经在谷歌搜索和溢出了一段时间 但找不到任何可用的东西 我需要一个脚本来监视公共文件夹并在创建新文件时触发 然后将文件移动到私有位置 我有一个 samba 共享文件夹 exam ple 在 UNIX 上映射到X 在窗户上 在某些操作中 t
  • perlbrew 可以在 Windows 上运行吗?

    使用 ActiveState 5 8 8Windows XP http en wikipedia org wiki Windows XP 我想安装更新的 Perl 进行测试 迁移 有一天 我们将不再以为自己只能使用一台计算机 当我想测试这类
  • 从 Perl 线程生成 Expect

    我正在编写一个脚本 该脚本需要定期 每 5 分钟 生成一个 Expect 进程来完成一些工作 下面是我的代码 它生成一个 Expect 进程并执行一些工作 脚本的主要进程始终在做一些其他工作 例如它可能等待用户输入 因为我在一个线程中调用这
  • 在 Perl 中组装 XML

    我需要对 NetApp 文件管理器进行 API 调用 我知道我需要发送什么原始 XML
  • 如何从 Perl 中的 Subversion 预提交挂钩访问提交的文件?

    我需要执行以下操作 用 Perl 编写预提交钩子 Hook 应检查所有提交的文件是否存在某些文本 如果未找到该文本则失败 基本上 我需要一个读取正在提交的文件的 Perl 钩子示例 我真的在寻找一些代码量最少的优雅解决方案 笔记 钩子应该使
  • 在 Perl 中优雅地确定系统架构

    我正在寻找一种简单的方法来确定 Perl 5 中的系统是 32 位还是 64 位 我已阅读perlvar来回翻阅手册页 并没有发现包含系统 CPU 架构的变量 编译 Perl 的 CPU 架构将足够接近 这是我最接近的 chomp my a
  • 为什么Perl的SUPER调用不使用箭头方法?

    我注意到 当您调用超类的方法时 您需要执行以下操作 my self class gt SUPER new 为什么不是这样 my self class gt SUPER gt new 我怀疑是因为 class gt SUPER gt new
  • Perl 中的布尔函数应该返回什么值?

    简短的问题 在 Perl 代码库中一致表示真假的最佳方法是什么 1 0 1 Perl 原生布尔运算符的特殊空字符串 return undef 即空列表 问题背景 我们都知道 Perl 在布尔值方面非常灵活 就像大多数事情一样 例如 Perl
  • 这可以一行完成吗?

    我像这样提取MAC地址 my tmp split domain 123 123 123 123 at 00 11 22 33 44 55 ether on eth0 my vip tmp 3 但不使用临时变量可以完成吗 是的 它可以 my
  • 如何从 R 运行带有特定模块的 perl 脚本?

    我可以从终端运行 perl 脚本 myperlscript pl 没有任何问题 但是 如果我尝试从 RStudio 中运行相同的 perl 脚本 则会出现以下错误 command lt myperlscript pl outputfile
  • 在压缩存档内的文本文件上运行“head”,而不解压存档

    问候 我接手了之前的团队并编写了处理 csv 文件的 ETL 作业 我在 ubuntu 上结合使用 shell 脚本和 perl csv 文件很大 它们以压缩档案形式到达 解压后 很多都超过 30Gb 是的 那是 G 旧进程是在 cron
  • Perl 和 Unix 如何以相同的顺序对 Unicode 字符串进行排序?

    我正在尝试获取 Perl 和 GNU Linuxsort 1 程序就如何对 Unicode 字符串进行排序达成一致 我在跑sort with LANG en US UTF 8 在Perl程序中我尝试了以下方法 use Unicode Col
  • 使用 Perl 获取 值

    因此 我有一个报告工具 可以在 HTML 文件中输出作业调度统计信息 并且我希望使用 Perl 来使用这些数据 但我不知道如何单步浏览 HTML 表 我知道如何使用 jQuery 来做到这一点 find tr each function v

随机推荐

  • 从 vbs 中具有特定扩展名的文件夹中获取最后修改的文件

    我有以下代码 我需要的只是找到扩展名为 PNG 和最近的最后修改日期的文件 我能够找到最后修改日期 但是如果我在文件上检查扩展名 则会出现 Object 某些数字 行需要 recentFile SCRIPT For Each objFile
  • 我可以在 iframe 上使用 postMessage,谁的 html 通过 - srcdoc 属性传递?

    我无法调用 postMessage 以防我在 srcdoc 属性中传递 html without sandbox allow scripts 它给出以下错误 Failed to execute postMessage on DOMWindo
  • 将字节流转换为数字数据类型

    假设我有一个字节流 其中我知道 64 位值 64 位随机数 的位置 字节顺序为 Little Endian 由于 PHP 的整数数据类型仅限于 32 位 至少在 32 位操作系统上 我如何将字节序列转换为 PHP 数字表示形式 我认为浮点就
  • 对非数字数据使用“bsxfun”

    有没有相当于bsxfun对于非数字数据 例如 我想比较存储在两个元胞数组中的所有字符串对 gt gt a aa bb cc gt gt b dd aa gt gt bsxfun strcmp a b not working for cell
  • Git:推送被拒绝

    我有一个团队 我们正在开发一个项目 我们的一名团队成员在 GitHub 上创建了一个存储库 并将其他人添加为协作者 我的团队成员将我们的代码提交到这个存储库 我对我的部分进行了更改 当我尝试提交它时 出现错误 如何将更改提交到我作为协作者的
  • 在完成块中调用时 UIAlertView 需要很长时间才能出现

    我的应用程序的一部分需要日历访问 这需要调用EKEventStore method void requestAccessToEntityType EKEntityType entityType completion EKEventStore
  • PySide 通过事件切换小部件?

    我想不通 我希望能够根据按钮点击等事件交换 QWidgets 但我遗漏了一些东西 而且我无法按照下面的代码行搜索到任何示例 我想要做的是单击顶部按钮之一并获取下面的小部件以在 QCalendar 或 QtextEdit 之间切换 我哪里出错
  • 从 JMS 侦听器类以编程方式更新某些视图

    我能够将 ActiveMQ 集成并在我的 OpenXava 应用程序中创建 JMS 使用者 现在 我需要使用接收到的数据更新某些瞬态视图 消息 它有几个问题需要考虑 例如 如何从 JMS 侦听器 java 类并将更改推送到当前视图 和 假设
  • 多核CPU单线程行为,未达到100%

    正如您从附图中看到的 我的双核机器上的 CPU 图形奇怪地对称 这是某种负载平衡 以防止一个核心比另一个核心使用更多 其背后的原因是什么 可能是热量分布 当然我主要关心的是 我的单线程 PSNR 图像算法是否达到 100 CPU 为 Cor
  • 为什么所有 openGL 对象都存储在 GLuint 中?

    我最好的猜测是 GLuint 持有一个指针而不是对象 因此它可以 持有 任何对象 因为它实际上只是持有一个指向内存中空间的指针 但如果这是真的 为什么我在使用这些变量时不需要取消引用任何内容 OpenGL对象名字是handles引用 Ope
  • 为每行插入一个数字输入 - R Shiny

    我有一个生成大矩阵的复杂代码 但在这里我附上一个简单的 可重现的示例 以便清楚地解释我想要的内容 这是代码 ui R library shiny shinyUI mainPanel Table Output tableOutput My t
  • 对齐规则

    我在家庭作业问题上遇到了一些麻烦 我想知道是否有人可以为我指出正确的方向 假设我们正在为一台机器编译 1字节字符 2字节 短整型 4 字节整数和 8 字节 实数 并具有对齐规则 需要每个原语的地址 数据元素为偶数倍 元素的大小 进一步假设
  • R 使用链接写入 Excel

    我想知道如何将 r 数据框导出到 excel 格式文件 并嵌入一些链接 这样我就可以使用 R 创建 xlsm 文件 打开 xlsm 文件时 我可以单击某些链接并打开其他文件或网页 我检查了几个 R Write to Excel 包 但几乎找
  • 令牌字符映射到 Ngram 过滤器 ElasticSearch NEST

    我正在尝试使用 NEST 复制以下映射 但在将标记字符映射到标记生成器时遇到问题 settings analysis filter nGram filter type nGram min gram 2 max gram 20 token c
  • Facebook Feed Dialog 返回未处理的 JavaScript,包括导致 iOS 应用程序崩溃的 post_id

    我尝试使用 Facebook 的 Feed Dialog 根据 Facebook 开发者网页上的示例 我编写了两个类我的应用程序模型类 and 我的视图控制 见下文 编译运行没有错误或警告 iOS 应用程序仅在第一次运行时挂起 当我打电话时
  • 如何在 MATLAB 中保存带有封闭框区域的绘图?

    保存绘图时 如何关闭顶部和右侧带有黑线的绘图区域 我不知道如何制作或如何搜索 如果有人知道请告诉我 例如 请看下面所示的图 其中缺少线条 在保存图像之前 请使用box命令 这会将您的绘图包围起来 使其周围有黑框 如您在示例图像中指定的那样
  • 防止直接访问 Node & Express 应用程序中的目录

    在我的 Express 应用程序中 我在 public 中有一个名为 media 的目录 我想限制对其 及其子目录 的访问 重定向或显示 404 我怎样才能实现它 提前致谢 如果你定义了public文件夹中express static像这样
  • 防止对覆盖层后面的元素进行 Tab 键操作

    我正在使用键盘 Tab 键 Shift Tab 键 在整个网页上进行 Tab 键切换 一切都运行良好且顺利 此外 当我继续按 Tab 键时 焦点会循环浏览所有元素 地址栏 元素 返回地址栏等 现在在某些情况下 我的内容之上有一个模式和一个透
  • 为什么 () => void 返回一些东西?

    我知道下面并不意味着返回 类型 为空 我的理解是 voidFunc 不返回任何内容 因为它返回 void 为什么它返回任何类型 type voidFunc gt void const myFunc voidFunc gt return he
  • Getopts 不带破折号地标记错误选项

    Getopt Long Configure no pass through my opts GetOptions opts opt1 s opt2 s opt3 test pl bad option without dash 当传递一个不带