如何在 Perl 中检查多个模式匹配

2024-01-11

有没有办法避免使用它进行多重模式检查?

我可以撕掉数组中的所有模式并检查它是否与模式数组中的任何模式匹配吗?请考虑当我有超过 20 个模式字符串时的情况。

if(  ($_=~ /.*\.so$/)
  || ($_=~ /.*_mdb\.v$/)
  || ($_=~ /.*daidir/)
  || ($_=~ /\.__solver_cache__/)
  || ($_=~ /csrc/)
  || ($_=~ /csrc\.vmc/)
  || ($_=~ /gensimv/)
){
  ...
}

如果您可以使用 Perl 版本 5.10,那么有一个非常简单的方法可以做到这一点。 只需使用新的智能匹配(~~) http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail操作员。

use warnings;
use strict;
use 5.10.1;

my @matches = (
  qr/.*\.so$/,
  qr/.*_mdb\.v$/,
  qr/.*daidir/,
  qr/\.__solver_cache__/,
  qr/csrc/,
  qr/csrc\.vmc/,
  qr/gensimv/,
);

if( $_ ~~ @matches ){
  ...
}

如果你不能使用 Perl 5.10,那么我会使用列表::更多实用工具::任意 http://search.cpan.org/perldoc/List::MoreUtils#any.

use warnings;
use strict;
use List::MoreUtils qw'any';

my @matches = (
  # same as above
);

my $test = $_; # copy to a named variable

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

如何在 Perl 中检查多个模式匹配 的相关文章

  • SFTP文件同时上传和下载

    cronjob 每 3 小时运行一次 使用 SFTP 下载文件 调度程序是用Perl编写的 使用的模块是Net SFTP Foreign Can the Net SFTP Foreign下载仅使用 SFTP 部分上传的文件 如果是这样 我们
  • 从 shell 脚本调用 Perl,如何将返回值从 Perl 传递到 shell?

    我成功地从 shell 脚本调用 Perl 脚本 现在我想将 Perl 脚本的返回值传递给 shell 脚本 指示它是否成功 我该怎么做呢 只需使用适当的退出值退出 Perl 脚本即可 exit exit value exit 0 if p
  • 从 Perl 线程生成 Expect

    我正在编写一个脚本 该脚本需要定期 每 5 分钟 生成一个 Expect 进程来完成一些工作 下面是我的代码 它生成一个 Expect 进程并执行一些工作 脚本的主要进程始终在做一些其他工作 例如它可能等待用户输入 因为我在一个线程中调用这
  • Perl 构建、单元测试、代码覆盖率:一个完整​​的工作示例

    我找到的关于 Perl 构建过程 单元测试和代码覆盖率的大多数 Stackoverflow 答案都只是将我指向 CPAN 那里的文档 指向 CPAN 模块绝对没有任何问题 因为完整的文档应该位于此处 不过 在很多情况下 我很难找到完整的工作
  • 结束 perl 脚本而不等待系统调用返回

    我在 Linux Ubuntu 14 04 上运行一个简单的 apache Web 服务器 并使用 perl CGI 脚本处理一些请求 该脚本使用以下命令启动系统命令system函数 但我希望它立即返回 无论系统调用的结果如何 我一直在传递
  • 模式匹配 Tkinter 子部件 (winfo_children) 以确定类型

    我正在尝试自动清除所有Entry父小部件中的小部件 import Tkinter import re root Tkinter Tk E1 Tkinter Entry root E1 pack E2 Tkinter Entry root E
  • 如何检测已更改的网页?

    在我的应用程序中 我使用 LWP 定期获取网页 无论如何 是否要检查两次连续提取之间网页是否在某些方面发生了变化 除了明确进行比较之外 是否有在较低协议层生成的任何签名 例如 CRC 可以提取并与旧签名进行比较以查看可能的更改 有两种可能的
  • 如何在正则表达式中匹配“/*”?

    stuff d learning perl tmp txt open STUFF stuff or die Cannot open stuff for read while
  • linux + ksh + 向下舍入或向上舍入 - 浮点数

    在我的 ksh 脚本中 我只需要计算整数 有时我会得到浮点数 例如 3 49 或 4 8 等 所以我需要根据以下规则将浮点数转换为整数 示例 3 49 will be 3 2 9 will be 3 4 1 will be 4 23 51
  • Perl 中的布尔函数应该返回什么值?

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

    我正在尝试找出 PBP 批准的正确方法来一次一行处理多行字符串 许多 Perl 编码人员建议将多行字符串视为文件句柄 除非您在脚本中使用 use strict 否则它可以正常工作 然后 您会收到编译器发出的警告 提示在使用严格引用时无法使用
  • Perl YAML 模块无法识别标量类型

    我加载以下 yaml 文件 foo bar s 1 hx 0x34 用这段代码 use YAML qw LoadFile Dump use Data Dumper my d LoadFile test yaml print Dumper d
  • 如何确保我的代码永远不会直接退出?

    eval require file subsequent code goes here If file包含一个exit语句 后面的代码就没有机会运行 如何解决以便后续代码始终有机会运行eval已经完成了 中止是不可能的exit call f
  • 使用 Perl 获取 值

    因此 我有一个报告工具 可以在 HTML 文件中输出作业调度统计信息 并且我希望使用 Perl 来使用这些数据 但我不知道如何单步浏览 HTML 表 我知道如何使用 jQuery 来做到这一点 find tr each function v
  • perl-5.10 之前的高效版本相当于 pack("Q>")

    更新 萨尔瓦正确地指出我对 Q 包模板的介绍是错误的 这是 gt 修饰符 不会返回到 5 8 Perl 5 10 引入了 pack 修饰符 gt 对于我使用 Q 的用例 它将一个无符号四边形 64 位 值打包在大尾数法 现在 我正在寻找一个
  • 使用 LWP::Agent 的 Perl JSON::RPC::Client

    我被要求不使用 JSON RPC Client 而是使用 LWP 进行调用 这是我的代码 Server usr bin perl use strict use lib use ServerLib use JSON RPC Server Da
  • 打包 Perl 应用程序,以便它可以在 Perl 的默认前缀之外工作

    我正在使用 Module Build 尽管我在构建环境上很灵活 来打包我正在编写的一些 Perl 软件 供我工作的内部使用 它包括一些脚本和一些辅助模块 我的计划是这样你就可以指定任何你想要的前缀 即perl默认值之外的东西 INC 在构建
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 在 Google 表格应用程序中进行身份验证

    我有一个类似批处理的应用程序 由调度程序定期调用 无需人类用户参与 它使用 PerlNet Google 电子表格 http metacpan org pod Net Google Spreadsheets包通过从数据库获取的数据来更新 G
  • F# 如何标记用户输入:分隔数字、单位、单词?

    我对 F 相当陌生 但最近几周一直在阅读参考资料 我希望处理用户提供的输入字符串 识别并分隔组成元素 例如 对于此输入 XYZ 酒店 6 晚 220 欧元 晚 加17 5 的税 输出应该类似于元组列表 XYZ 字 酒店 字 6 数字 夜晚

随机推荐

  • 多对象绘制(OpenGL)

    问题是我不知道如何正确绘制两个对象 因为我的另一个对象没有被绘制 这是主要代码 GLuint VertexArrayID glGenVertexArrays 1 VertexArrayID glBindVertexArray VertexA
  • 获取给定周年、给定月份和给定周的开始和结束日期

    如何在 c 4 0 中获取给定年份 int 给定月份 int 和给定周 int example Year 2011 Month 07 week 04 的开始和结束日期 提前致谢 2011 年的开始日期为 07 月 该月的周数为 04 Goo
  • Segue 传递数据后如何重新加载 tableView 数据

    我有两个表视图 一种是用户单击的 另一种是显示数据的 当用户单击第一个表视图中的单元格时 将对我的 firebase 数据库进行查询 并将查询存储在数组中 然后我通过 segue 传递数据 我使用了属性观察器 因此我知道正在设置变量 通过使
  • Ruby 类实例变量与类变量

    I read Ruby 实例变量何时设置 https stackoverflow com questions 826734 when do ruby instance variables get set但何时使用类实例变量我有两种想法 类变
  • MVVM标准化

    有人在Silverlight 发布 http forums silverlight net forums t 159237 aspxMVVM 目前缺乏标准化 因此每个人都有自己的风格 这就是为什么我和 WPF Disciples 的一些人正
  • AutoEventWireup 和 base.OnLoad(e) 调用 Self 导致堆栈溢出

    使用VS2008 C 什么时候AutoEventWireup设置为 true 并在我调用的网络表单中base OnLoad e like protected void Page Load object sender EventArgs e
  • 将 bash 变量放入 zip 命令的文件名中

    在 bash 脚本中 如何使用变量来创建专门命名的压缩文件 例如 我想做这样的事情 VERSION STRING 1 7 3 zip r foo VERSION STRING foo 理想情况下我最终会得到一个名为foo 1 7 3 zip
  • Java ArrayList如何在开头添加元素

    我需要将元素添加到ArrayList队列无论如何 但是当我调用该函数来添加元素时 我希望它在数组的开头添加该元素 因此它具有最低的索引 并且如果数组有 10 个元素 则添加新元素会删除最旧的元素元素 索引最高的元素 有没有人有什么建议 Li
  • 如何删除 XMLDocument 中的特定属性?

    在我的 C 代码库中 我有一个XMLDocument形式 a b b a
  • Django模型-如何添加订单索引注释?

    如何在 django 中注释查询集 以添加表示排序结果中每行的索引 位置 的附加字段 我需要以有序的方式检索用户 并添加一个字段 该字段将指定订单中每个对象的绝对位置 这就是我的代码 users User objects all annot
  • 用户“NT AUTHORITY\NETWORK SERVICE”登录失败

    我已经为此苦苦挣扎了两天 但仍未接近解决方案 我至少读了20 30个帖子 但仍然无法解决这个问题 请帮帮我 我已禁用匿名身份验证 启用 asp net 模拟 我已经添加了
  • 将 StudlyCaps 字符串拆分为单词

    我需要找到一种方法 使用 php regex 将字符串 下面的示例 拆分为空格分隔的单词 以下是一些字符串示例和我的预期输出 SomeRANDOMString gt 一些随机字符串ANOTHERRandomString gt 另一个随机字符
  • UIWebView 中 iOS 中的点与 CSS 中的大小单位?

    当您将 HTML 加载到 iOS 中的 UIWebView 中时 如何在 CSS 中获取 iOS 点单位 也就是说 iOS 中的点单位是相对于显示屏尺寸的相对尺寸测量 如何在 CSS 中获得这些相对点单位 最初 我的程序中有一个错误 很长一
  • Select 或 create 语句中的数据库列[重复]

    这个问题在这里已经有答案了 可能的重复 PostgreSQL 选择查询中的最大列数是多少 https stackoverflow com questions 12606842 what is the maximum number of co
  • 如何使用 PHP 从 .dat 文件中检索单独的数据行?

    我无法理解如何从数据中检索单独的数据行 例如名字 年龄 出生年份 性别 dat使用 PHP 文件 我对网上读到的所有内容感到困惑 我需要从文本中取出每一行 dat文件并为每一行分配自己的 variable稍后用于打印 到目前为止我所拥有的
  • 自 2020-06 新版本以来,Eclipse PHP 垃圾邮件出现新警告

    我在 Eclipse 中开发一个 PHP 项目 在更新到最新版本 2020 06 之前 我曾经没有任何警告 自从我进行此更新以来 它向我发送了两个警告 首先是关于类文件 例如 MyClass inc php 中定义的 MyClass Ecl
  • 使用 ggplot2 对数正态刻度进行漂亮的刻度(动态而非手动)

    我正在尝试使用 ggplot2 创建具有对数正态 y 刻度的性能图表 不幸的是 我无法为基本绘图函数生成漂亮的刻度 这是我的例子 library ggplot2 library scales fix RNG set seed seed 1
  • RStudio 在多次调用 Rcpp 函数后崩溃

    我编写了一些 Rcpp 代码来查找两条分段线性曲线的交点 我以需要嵌套循环 检查所有段对 的天真的方式解决了这个问题 所以为了速度而转向 Rcpp 该问题在 示例 1 中进行了图示描述 https prezi com rwkji leuwd
  • 如何跟踪和防止在单独进程中运行的c3po出现死锁?

    我有一个非常简单的计算 可以生成字母矩阵 可以找到矩阵中的所有单词 单词中的字母是相邻的单元格 for int i 0 i lt 500 i System out println i Matrix matrix new Matrix 4 m
  • 如何在 Perl 中检查多个模式匹配

    有没有办法避免使用它进行多重模式检查 我可以撕掉数组中的所有模式并检查它是否与模式数组中的任何模式匹配吗 请考虑当我有超过 20 个模式字符串时的情况 if so mdb v daidir solver cache csrc csrc vm