散列中的散列 Perl 代码问题

2023-12-01

我尝试使用 perl 代码从下面的命令存储信息,

dis ql(*) all'|runmqsc MQ_NAME

假设该命令的输出如下:

AMQ8409: Display Queue details.
   QUEUE(SYSTEM.RETAINED.PUB.QUEUE)        TYPE(QLOCAL)
   ACCTQ(QMGR)                             ALTDATE(2016-08-01)
   ALTTIME(18.33.20)                       BOQNAME( )
   CLWLPRTY(0)                             CLWLRANK(0)
   CLWLUSEQ(QMGR)                          CRDATE(2016-08-01)
   CRTIME(18.32.37)                        CURDEPTH(2)
   MAXDEPTH(999999999)                     MAXMSGL(104857600)

AMQ8409: Display Queue details.
   QUEUE(SYSTEM.SELECTION.EVALUATION.QUEUE)
   TYPE(QLOCAL)                            ACCTQ(QMGR)
   ALTDATE(2016-08-01)                     ALTTIME(18.33.20)
   BOQNAME( )                              BOTHRESH(0)
   CLWLRANK(0)                             CLWLUSEQ(QMGR)
   CRDATE(2016-08-01)                      CRTIME(18.32.37)
   CURDEPTH(0)                             CUSTOM( )
   IPPROCS(0)                              MAXDEPTH(999999999)

AMQ8409: Display Queue details.
   QUEUE(SYSTEM.SELECTION.VALIDATION.QUEUE)
   TYPE(QLOCAL)                            ACCTQ(QMGR)
   ALTDATE(2016-08-01)                     ALTTIME(18.33.20)
   BOQNAME( )                              BOTHRESH(0)
   CLWLRANK(0)                             CLWLUSEQ(QMGR)
   CRDATE(2016-08-01)                      CRTIME(18.32.37)
   CURDEPTH(0)                             CUSTOM( )
   IPPROCS(0)                              MAXDEPTH(999999999)                       

因此,对于每个输出(我们可以看到有 3 个),我编写了一段代码来存储每个 MQ 队列名称的 QUEUE、CURDEPTH 和 MAXDEPTH 信息。

我的代码如下,

#!/usr/bin/perl

use warnings;
use strict;

my %QM;
my $qm = 'MQ_NAME';

open (CHS_OUT, "echo 'dis ql(*) all'|runmqsc $qm|");

while (<CHS_OUT>) {

        my ($QUEUE, $QName) = / ( QUEUE ) \( ( [^)]+ ) /x;

        if ( my ($item, $value)
        = / ( CURDEPTH | MAXDEPTH ) \( ( [^)]+ ) /x )
        {       
                $QM{$QName}{$item} = $value;
        }
}

foreach my $Que (sort keys %QM) {
        foreach my $v (keys %{ $QM{$Que} }) {
                print "$Que : $v = $QM{$Que}{$v} \n";
        }
}

我已经尝试将 $QName 设置为全局,但仍然无济于事,此代码仍然存在错误。

我的代码的输出:

Use of uninitialized value $QName in hash element at mq_queue_5.pl line 25, <CHS_OUT> line 7353.
Use of uninitialized value $QName in hash element at mq_queue_5.pl line 25, <CHS_OUT> line 7361.
Use of uninitialized value $QName in hash element at mq_queue_5.pl line 25, <CHS_OUT> line 7384.
Use of uninitialized value $QName in hash element at mq_queue_5.pl line 25, <CHS_OUT> line 7392.
 : CURDEPTH = 0 
 : MAXDEPTH = 999999999 

我已经坚持了好几天了,已经做了很多改变,但仍然没有帮助。


您必须检查 QName 是否匹配并记住它:

#!/usr/bin/perl

use warnings;
use strict;

my %QM;
my $qm = 'MQ_NAME';

open (CHS_OUT, "result.txt");
my $QName;
while (<CHS_OUT>) {
        my ($QUEUE, $QName1) = / ( QUEUE ) \( ( [^)]+ ) /x;

        if ($QName1) {
                $QName=$QName1;
        }
        if ( my ($item, $value)
        = / ( CURDEPTH | MAXDEPTH ) \( ( [^)]+ ) /x )
        {
                $QM{$QName}{$item} = $value;
        }
}

foreach my $Que (sort keys %QM) {
        foreach my $v (keys %{ $QM{$Que} }) {
                print "$Que : $v = $QM{$Que}{$v} \n";
        }
}

OUTPUT:

SYSTEM.RETAINED.PUB.QUEUE : CURDEPTH = 2
SYSTEM.RETAINED.PUB.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.EVALUATION.QUEUE : CURDEPTH = 0
SYSTEM.SELECTION.EVALUATION.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.VALIDATION.QUEUE : MAXDEPTH = 999999999
SYSTEM.SELECTION.VALIDATION.QUEUE : CURDEPTH = 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

散列中的散列 Perl 代码问题 的相关文章

  • 如何通过 sudo (或作为另一个用户)打开 Perl 文件句柄写入数据

    我想将数据写入文件 但应使用特定用户的访问权限打开文件句柄 因此 有以下声明 open FH gt filename or die n 将允许以该特定用户的身份写入文件 有没有办法在 Perl 脚本中执行此操作 而无需运行整个脚本sudo
  • Python替换多个字符串同时支持反向引用

    有一些好方法 https stackoverflow com questions 6116978 python replace multiple strings处理 python 中的同时多字符串替换 但是 我在创建一个高效的函数来实现这一
  • 正则表达式中的零宽度元素是什么?

    最近 我在正则表达式中看到 零宽度元素 这些是什么 能不能把它们当作幽灵数据 这样对于替换 就不会被替换 对于 匹配 他们不会进入matches 1 matches 2 etc 是否有针对其各种用途的良好教程 他们已经在这里呆了很长时间了吗
  • 什么正则表达式永远无法匹配?

    Merged https meta stackexchange com questions 158066 what is a merged question with 永远不会与任何内容匹配的正则表达式 questions 1723182
  • 正则表达式:如何从字符串中获取单词(C#)

    我的输入由用户发布的字符串组成 我想做的是创建一本包含单词以及它们的使用频率的字典 这意味着我想解析一个字符串 删除所有垃圾 并获取单词列表作为输出 例如 假设输入是 LOLOLOL YOU VE BEEN PWN3D 1einszwei
  • 本地“关闭”binmode(STDOUT, ":utf8")

    我的脚本开头有以下块 usr bin perl5 w use strict binmode STDIN utf8 binmode STDOUT utf8 binmode STDERR utf8 在某些子程序中 当存在其他编码 来自远程子程序
  • 如何对逗号和句号使用 re.split?

    我有多个字符串 其中单词用逗号或句点分隔 string apple pear grapes carrot cabbage veggies fruit yard 我想根据逗号和句点来分割它 string apple pear grapes c
  • 在 Perl 中如何打印到变量而不是文件?

    如何使用 Perl 打印到变量 我已经在一个程序上工作了一段时间 它记录了它的迭代的以非常详细的方式取得进展 print loghandle some message 但是 我还想有选择地将一些消息打印到不同的文件中 当然 我可以在代码中添
  • javascript从字符串创建不区分大小写的正则表达式

    我试图通过以不区分大小写的方式将输入与正则表达式匹配来进行验证 正则表达式作为对象上的字符串从服务中下来 我可能会得到类似的东西 regex ane 我可以执行以下操作 var rx new RegExp object regex The
  • 使用 C++ 中的 Boost 正则表达式缩小 HTML

    Question 如何使用 C 缩小 HTML 资源 外部库可能是答案 但我更希望改进当前代码 尽管我很期待其他的可能性 当前代码 这是我在c 中的解释以下答案 https stackoverflow com a 5324014 57079
  • 如何使用Java中的正则表达式删除字符串中的反斜杠?

    如何使用Java中的正则表达式删除字符串中的反斜杠 例如 hai how are you 我只想要 hai how are you str str replaceAll or str str replace replaceAll 将第一个参
  • 在Python中高效匹配多个正则表达式

    当你有正则表达式时 词法分析器就很容易编写 今天我想用Python写一个简单的通用分析器 并想出了 import re import sys class Token object A simple Token structure Conta
  • 如何通过 .htaccess 删除 URL 中任何位置的空参数或参数?

    我的意思是空参数可以在 URL 中的任何位置 每次不同的位置 每次使用不同的名称 每次在不同的 php 页面上 例如 http www example com AnyPHPpageHere php parameter1 7 paramete
  • R正则表达式获取第二个下划线之前的所有文本

    s lt 1 343 43Hello 2 323 14 fdh 99H 在 R 中 我想使用正则表达式来获取第二个下划线之前的子字符串 如何使用一个正则表达式来完成此操作 另一种方法是用 分割 然后粘贴前两个 一些东西 paste sapp
  • 使用 Vala 和 GLib 的正则表达式

    有没有一个函数 比如http php net manual en function preg match all php http php net manual en function preg match all php 使用 GLibh
  • 通过搜索查找下一个文本并突出显示不起作用

    当在搜索框中搜索任何文本时 它可以找到并突出显示正确的文本 但是当搜索下一个 新文本时 它无法找到下一个 新文本 再次搜索时它不起作用 我无法找到问题 这JS below JS button search click function va
  • 正则表达式 - 从行首和行尾修剪空格[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions Link
  • htaccess 301 重定向 - 删除查询字符串 (QSA)

    我一直在努力处理一些 htaccess 重定向 我只是花了一些时间在堆栈上阅读和搜索 但无法获得适合我的场景的答案 我正在将旧客户端网站的 301 重定向到新客户端 旧页面有参数查询 我想从网址中删除它 menu php idCategor
  • Web 开发中的 Perl [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 是否可以使用 Eclipse 的正则表达式搜索和替换转换为小写?

    我已经尝试过 L 但它似乎不是其语法的一部分 并且它的帮助没有提及任何可用的转换 我知道我可以并且知道如何从命令行执行此操作 但是 是否可以使用 Eclipse 的正则表达式搜索和替换进行大小写转换 您可以分两步完成 首先插入小写字母 那么

随机推荐

  • Rake 任务似乎忽略了database.yml 配置

    我正在使用 MAC OS X 以及通过 Homebrew 安装的 postgresql 我正在使用 Rails 4 2 1 和 ruby 2 2 0 进行开发 与 postgresql 服务器的连接很好 但由于某种原因 每个应用程序都会访问
  • awk:根据另一列的值打印列

    我有一个包含六列的文件 我只想打印第六列中值 gt 3 的行的前两列 该语句打印第六列 gt 3 的所有行 awk 6 gt 3 file gt out 此语句打印前两列 awk print 1 2 file gt out 有人知道如何将这
  • 谷歌地图 - 如何设置缩放级别[重复]

    这个问题在这里已经有答案了 我已经尝试了 4 年多来弄清楚如何使用谷歌地图 我欣喜若狂 终于能够生成带有正确地址的地图 这是我的 JavaScript 我现在正在努力解决如何设置缩放级别 我在下面显示的每个地方都尝试过 但没有一个起作用 在
  • Windows 2012R2 中的 Powershell 脚本未运行

    我刚刚将 PowerShell 脚本从 2003 服务器迁移到 2012R2 服务器 但是当我尝试运行 PowerShell 脚本时 它给出了以下错误 我无法设置时间 无法设置日期 无法访问某些文件 无法从脚本运行计划任务 它一直给我访问被
  • .net maui blazor 混合 MSAL 身份验证

    我正在尝试通过适用于 Android 的 net maui blazor 进行身份验证 我已经设置了清单以正确反弹 AAD 并且我可以登录并从 azure 获取我的 ID 问题是令牌无法与 blazor 授权一起使用 我已经按照github
  • 如何使用 Spring Data Solr 实现多核和存储库的自定义 Solr 存储库

    我想使用 spring data solr 在一项服务中访问多个 2 个存储库 从Spring Data Solr 多核和存储库我知道 不幸的是 通过命名空间配置的多核支持是一个悬而未决的问题 您能帮我看一下以下示例吗 如何创建自定义存储库
  • boost asio post 不起作用,io_service::run 在 post 后立即退出

    我正在尝试将 boost 信号与 asio 混合以进行基于调度的处理程序调用 当从线程调用 post 方法时 io service run 立即退出 处理 post 的回调永远不会被调用 回调是一个 C 11 lambda 例程 我粘贴代码
  • 检查android wifi p2p连接是否成功?

    我正在通过 Wifi Direct 连接两个 Android 设备 我在第一台设备上使用 Wifip2pManager createGroup 创建了一个组 现在 在第二台设备上我调用 Wifip2pManager connect 方法 但
  • 弹性搜索 java.lang.NoClassDefFoundError: org/elasticsearch/transport/Netty3Plugin

    我试图通过使用 java api 制作一个基本程序来熟悉elasticsearch 我已经研究答案有一段时间了 但我不确定我是否正在执行错误找到的解决方案 或者只是没有看到真正的问题 我使用的是elasticsearch 5 1 1并下载了
  • 在 Inno Setup 中执行已安装的批处理文件

    我希望安装程序创建一项服务 我通常通过以管理员身份运行命令提示符并转到 bat文件和打字 service bat install 有没有办法在安装程序中执行这个批处理文件 如果是这样 怎么办 我要在脚本中添加什么 该服务文件的位置是 the
  • 禁用导航中当前页面的链接

    我有一个非常标准的网站导航 主要导航是一个 ul 有几个嵌套的 ul 我基本上只是想在用户已经位于该页面上时动态禁用链接 因此 如果我在主页上 则需要禁用主页链接 如果我在联系页面上 则需要禁用联系页面链接 我不想完全删除链接 只需从锚点中
  • 将 Bootstrap 进度条设置为从 0 到 100% 的动画

    我正在使用 Twitter Bootstrap 来构建我的网页 我有这个 HTML 代码 div class btn group div
  • 如何在不查找的情况下连接mongodb中的两个集合

    我有两个收藏 名字是post and comment 模型结构如下 我想使用聚合查询帖子并按评论 如长度总和 排序 目前我可以在以下查询语句中查询帖子评论 如长度总和 我的问题是如何查询帖子并加入评论集合蒙戈版本2 6 我知道Mongo 3
  • 由于环境变量,Eclipse 将无法打开[重复]

    这个问题在这里已经有答案了 我只是重新启动了计算机 没有进行任何更改 突然打不开Eclipse了 相反 我收到此错误消息 Eclipse
  • 在 Rails 中包含特定于页面的 JavaScript 的正确方法

    我想包括这一点 例如 jQuery document ready function my modal modal options 在 Rails 应用程序中的一个特定位置 在我的例子中 该文件名为views modals mymodal h
  • wxWidgets 2.8.12 无法在 Codeblocks 中工作

    我正在学习将 wxWidget 2 8 12 与 Codeblocks 12 11 一起使用 我已按照此站点上的说明安装 wxWidgets 和 Codeblocks http wiki codeblocks org index php t
  • SDWebImage 使用 Swift 将图像设置为 CellView 中的 UIButton

    您好 我正在使用 SDWebImage 将图像设置为 xcode 10 2 1 中的按钮 我正在尝试以下操作 import SDWebImage cell bProfileImage sd setImage with URL string
  • 如何使用 deno 的 Oak 提供图像?

    Deno 似乎针对文本文件 但我还需要为网站提供图像文件 您可以使用send 功能send 旨在将静态内容作为 中间件功能 在最直接的用法中 根是 提供给该功能的请求得到满足 本地文件系统中相对于根目录的文件 请求的路径 const app
  • Magento - 如何启用 SMTP 服务器身份验证和安全传输?

    我想让 SMTP 服务器在 Magento 应用程序 版本 1 7 上工作 所以我在文件中添加了以下代码app code core Mage Core Model Email Template php public function get
  • 散列中的散列 Perl 代码问题

    我尝试使用 perl 代码从下面的命令存储信息 dis ql all runmqsc MQ NAME 假设该命令的输出如下 AMQ8409 Display Queue details QUEUE SYSTEM RETAINED PUB QU